JDK-7 SwingWorker死锁?

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)

Tre*_*kaz 6

由于没有人解雇链接,似乎这实际上是一个已知的错误:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880336

令人惊讶的是,对于大多数非平凡的应用程序而言,应该是一个showstopper错误的投票少于100票.