SwingWorker
используется в следующих целях:
done()
метод.publish()
и process()
методы.SwingUtilities.invokeLater()
может выполнить вышеупомянутые задачи следующим образом:
SwingWorker.execute()
метод от EDT, мы можем выполниться ExecutorService.submit(new MyRunnable())
поскольку это также создаст другой поток, который может выполнить продолжительную задачу.done()
метод case1) SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
в конце задачи.process()
метод case1) SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
в месте, где мы звонили publish()
метод в case1.Я задаю этот вопрос, потому что проблема указала рассматриваемый Java - SwingWorker - Может мы звонить, один SwingWorker от другого SwingWorker вместо EDT может быть решен SwingUtilities.invokeLater()
но не может быть решен с SwingWorker
SwingWorker
является вспомогательным классом - не то, чтобы его нужно использовать, но его использование намного проще и понятнее, чем выполнение той же работы вручную. (Это также облегчает проверку прогресса.) Обратите внимание, что он был добавлен в версии 6 -- до этого некоторые люди использовали более простой класс, определенный в Swing Tutorial, или делали шаги, похожие на те, которые вы отметили.