aka*_*okd 4 java swing swingworker java-7
我有一个小型图像处理应用程序,它使用SwingWorker一次完成多项任务.但是,如果我运行以下代码(过度简化的摘录),它只挂在JDK 7 b70(Windows)上,但在6u16中工作.它在另一个工作者中启动一个新工作者并等待其结果(真正的应用程序运行多个子工作者并等待所有这些方式).我是否在这里使用了一些错误的模式(因为在swingworker-pool中大多有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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
由于没有人解雇链接,似乎这实际上是一个已知的错误:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880336
令人惊讶的是,对于大多数非平凡的应用程序而言,应该是一个showstopper错误的投票少于100票.