Java: diferencia entre SwingWorker y SwingUtilities.invokeLater ()

SwingWorker se utiliza para los siguientes propósitos:

Para ejecutar tareas de larga duración en un hilo diferente para evitar que la GUI no respondaPara actualizar la GUI con los resultados producidos por la tarea de ejecución larga al final de la tarea a través dedone() método.Para actualizar la GUI de vez en cuando con los resultados intermedios producidos y publicados por la tarea con la ayuda depublish() yprocess() métodos

SwingUtilities.invokeLater() puede realizar las tareas anteriores de la siguiente manera:

En lugar de ejecutarSwingWorker.execute() método del EDT, podemos ejecutarExecutorService.submit(new MyRunnable()) ya que también creará otro hilo que puede ejecutar tareas de larga duración.Para actualizar la GUI al final de la tarea, podemos poner código (escrito endone() método de caso1)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode()) Al final de la tarea.Para actualizar la GUI en el medio de la tarea, podemos poner código (escrito enprocess() método de caso1)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode()) en el lugar donde llamamospublish() método en caso1.

Estoy haciendo esta pregunta porque el problema especificado en la preguntaJava - SwingWorker - ¿Podemos llamar a un SwingWorker desde otro SwingWorker en lugar de EDT puede ser resuelto porSwingUtilities.invokeLater() pero no se puede resolver conSwingWorker

Respuestas a la pregunta(2)

Su respuesta a la pregunta