Java - Diferença entre SwingWorker e SwingUtilities.invokeLater ()

SwingWorker é usado para os seguintes fins:

Para executar tarefas de longa execução em um encadeamento diferente, para impedir que a GUI não respondaPara atualizar a GUI com os resultados produzidos pela tarefa de execução de longa duração no final da tarefa através dedone() método.Para atualizar a GUI de tempos em tempos com os resultados intermediários produzidos e publicados pela tarefa com a ajuda depublish() eprocess() métodos.

SwingUtilities.invokeLater() pode executar as tarefas acima da seguinte maneira:

Em vez de executarSwingWorker.execute() método do EDT, podemos executarExecutorService.submit(new MyRunnable()) como também criará outro encadeamento que pode executar tarefas de longa execução.Para atualizar a GUI no final da tarefa, podemos colocar o código (escrito emdone() método de case1)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode()) no final da tarefa.Para atualizar a GUI no meio da tarefa, podemos colocar o código (escrito emprocess() método de case1)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode()) no lugar onde chamamospublish() método no caso1.

Estou fazendo esta pergunta porque o problema especificado em questãoJava - SwingWorker - Podemos chamar um SwingWorker de outro SwingWorker em vez de EDT pode ser resolvido porSwingUtilities.invokeLater() mas não pode ser resolvido comSwingWorker

questionAnswers(2)

yourAnswerToTheQuestion