Java: diferencia entre SwingWorker y SwingUtilities.invokeLater ()
SwingWorker
se utiliza para los siguientes propósitos:
done()
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étodosSwingUtilities.invokeLater()
puede realizar las tareas anteriores de la siguiente manera:
SwingWorker.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