SwingWorker 没有完成
SwingWorker get not finishing
我最近一直在使用一些 SwingWorker,但遇到了一些问题,所以我尝试创建一个 SCSSE,但这显然行不通
static SwingWorker worker;
public static void main(String[] args) {
worker = new SwingWorker<Object, Object>() {
protected Object doInBackground() throws Exception {
return "Hello";
}
protected void done() {
System.out.println("I'm done!");
};
};
System.out.println("working");
try {
System.out.println("result: " + worker.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
System.out.println("working finished");
}
执行此操作时,它会打印 "working",然后脚本会无限期地继续 运行...
您永远不会启动 SwingWorker
,因此 worker.get()
方法在等待 worker 完成时处于阻塞状态。
您可以通过添加来验证这一点:
System.out.println("waiting for result");
System.out.println("result: " + worker.get());
如果你想让SwingWorker
执行那么你需要调用:
worker.execute()
创建 SwingWorker
.
之后
我最近一直在使用一些 SwingWorker,但遇到了一些问题,所以我尝试创建一个 SCSSE,但这显然行不通
static SwingWorker worker;
public static void main(String[] args) {
worker = new SwingWorker<Object, Object>() {
protected Object doInBackground() throws Exception {
return "Hello";
}
protected void done() {
System.out.println("I'm done!");
};
};
System.out.println("working");
try {
System.out.println("result: " + worker.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
System.out.println("working finished");
}
执行此操作时,它会打印 "working",然后脚本会无限期地继续 运行...
您永远不会启动 SwingWorker
,因此 worker.get()
方法在等待 worker 完成时处于阻塞状态。
您可以通过添加来验证这一点:
System.out.println("waiting for result");
System.out.println("result: " + worker.get());
如果你想让SwingWorker
执行那么你需要调用:
worker.execute()
创建 SwingWorker
.