java - 一个接一个地执行每个SwingWorker类

jad*_*jan 5 java swing multithreading swingworker

我有多个类扩展SwingWorker.我希望实现的是逐个执行每个类(不执行上一个类'done方法中的下一个类).例如,假设我有:

ClassSwingW1 csw1 = new ClassSwingW1();
csw1.execute;

ClassSwingW2 csw2 = new ClassSwingW2();
csw2.execute;

ClassSwingW3 csw3 = new ClassSwingW3();
csw3.execute;
Run Code Online (Sandbox Code Playgroud)

等等.

public class ClassSwingW1 extends SwingWorker<Void, Void> {

    @Override
    protected Void doInBackground() throws Exception {
        //do something

        return null;
    }

}

public class ClassSwingW2 extends SwingWorker<Void, Void> {

    @Override
    protected Void doInBackground() throws Exception {
        //do something

        return null;
    }

}

public class ClassSwingW3 extends SwingWorker<Void, Void> {

    @Override
    protected Void doInBackground() throws Exception {
        //do something

        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望csw2在csw1完成后执行,csw3在csw2完成后执行.我不希望它们同时执行.我怎么做到这一点?谢谢

ass*_*ias 3

您可以使用该get()方法来代替execute()- 它将阻塞,直到 SwingWorker 完成其工作。只要确保您不是从 EDT 调用它即可。

Javadoc 摘录:

如有必要,等待计算完成,然后检索其结果。注意:在事件调度线程上调用 get 会阻止所有事件(包括重绘)的处理,直到此 SwingWorker 完成为止。