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