java - 我可以在一个 SwingWorker 中运行另一个 SwingWorker 吗?

标签 java swing swingworker

我需要运行两个 SwingWorker。其中一个只能在另一个完成后才能运行。我可以像这样运行它们吗?

class TestWorker {
    private FirstWorker worker1;
    private SecondWorker worker2;

    public TestWorker() {
        worker1 = new FirstWorker() {
            @Override
            protected void done() {
                try {
                    result1 = get();
                } catch (Exception) {
                    // exception handling
                }

                worker2 = new SecondWorker() {
                    @Override
                    protected void done() {
                        try {
                            result2 = get();
                        } catch (Exception) {
                            // exception handling
                        }
                    }
                }

                worker2.execute();
            }
        }

        worker1.execute();
    }
}

我该如何取消它们?像这样吗?

private cancel() {
    if (worker2 != null) work2.cancel();
    if (worker1 != null) work1.cancel();
}

非常感谢!

最佳答案

你可以这样做并且它会起作用。但是,除非您未显示外部 done 中的其他操作,否则最好使用在 doInBackground 中执行这两个操作并返回结果数组的东西。

关于java - 我可以在一个 SwingWorker 中运行另一个 SwingWorker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3409219/

相关文章:

java - EBNF/半熟 : how to translate regexp into PEG?

java - 如何将树路径上的一个节点插入到另一个节点中?

java - SwingWorker 中的进度对话框

Java - 如何拖放 JPanel 及其组件

java - 我在制作Java版记事本时遇到问题

java swing来计算所有控件的数量

java - 网络.sf.json.JSONException : There is a cycle in the hierarchy

java volatile与java链表一起使用

java - 如何在表中编写行索引和列索引(java) - 嵌套for循环

java - JFileChooser 显示错误的当前目录