У меня есть небольшое приложение для обработки изображений, которое делает несколько вещей одновременно, используя SwingWorker. Однако, если я запускаю следующий код (упрощенный отрывок), он просто зависает на JDK 7 b70 (Windows), но работает в 6u16. Он запускает новый воркер внутри другого воркера и ждет его результата (настоящее приложение запускает несколько подворкеров и ждет весь этот путь). Использовал ли я здесь какие-то неправильные шаблоны (поскольку в основном в пуле свингворкеров есть 3-5 воркеров, который, я думаю, имеет ограничение в 10)?
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class Swing {
static SwingWorker<String, Void> getWorker2() {
return new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
return "Hello World";
}
};
}
static void runWorker() {
SwingWorker<String, Void> worker
= new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
SwingWorker<String, Void> sw2 = getWorker2();
sw2.execute();
return sw2.get();
}
};
worker.execute();
try {
System.out.println(worker.get());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
runWorker();
}
});
}
}