Java - разница между SwingWorker и SwingUtilities.invokeLater ()

SwingWorker используется для следующих целей:

Для запуска долго выполняющихся задач в другом потоке, чтобы предотвратить перехват GUIДля обновления графического интерфейса пользователя с результатами, полученными при выполнении долгосрочной задачи в конце задачи через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

Ответы на вопрос(2)

Ваш ответ на вопрос