java - 依次执行每个 SwingWorker 类

标签 java multithreading swing swingworker

我有多个扩展 SwingWorker 的类。我希望完成的是一个接一个地执行每个类(而不是在上一个类的完成方法中执行下一个类)。例如,假设我有:

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

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

ClassSwingW3 csw3 = new ClassSwingW3();
csw3.execute;

等等

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;
    }

}

我希望 csw2 在 csw1 完成后执行,csw3 在 csw2 完成后执行。我不要他们 同时执行。我将如何做到这一点?谢谢

最佳答案

您可以使用 get() method而不是 execute() - 它将阻塞直到 SwingWorker 完成它的工作。只需确保您不从 EDT 调用它即可。

Javadoc 摘录:

Waits if necessary for the computation to complete, and then retrieves its result. Note: calling get on the Event Dispatch Thread blocks all events, including repaints, from being processed until this SwingWorker is complete.

关于java - 依次执行每个 SwingWorker 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386920/

相关文章:

JAVA 字符串转char

java - 将 Artemis ESF 与 JRuby 结合使用

java - 循环浏览 ImageView

java - 创建 ImageIcon 时 getClass().getResource(...) 做了什么?

java - 将 findbugs NotNull 设置为包下所有类的默认值

java - 在 mariadb 中显示状态查询错误

java - 线程优先级没有按预期工作?

haskell - 对于线程化Haskell调试,我最好的工具是什么?

java - 如何更新自定义 JPanel?

java - JTextField 要求我在进行正确更新之前再次给予它焦点