我从教程中复制了以下代码并将其粘贴到我的编辑器(Netbeans 8.1)中。我读了SwingWorker documentation,根据我对此和其他文档的理解, execute()方法假设为"启动线程" (或将其置于工作线程中)。
public class Sandbox {
public static void main(String[] args)
{
SwingWorker<Void, Void> w = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
for(int i=0; i<=10; i++){
Thread.sleep(1000);
System.out.println(i);
}
return null;
}
};
w.execute();
}
}
这是什么问题?如果我使用 SwingUtilities.invokeLater(w)它可以工作,但它只显示 0 ,当我删除 Thread.sleep(1000)时(据我所知,假设暂停),它按预期工作。