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.

之后