Java 我能在另一个SwingWorker中运行一个SwingWorker吗?

Java 我能在另一个SwingWorker中运行一个SwingWorker吗?,java,swing,swingworker,Java,Swing,Swingworker,我需要运行两个SwingWorkers。其中一个只能在另一个完成后运行。我可以这样运行它们吗 class TestWorker { private FirstWorker worker1; private SecondWorker worker2; public TestWorker() { worker1 = new FirstWorker() { @Override protected void don

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

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
中同时执行这两个操作并返回一组结果的操作。

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