Estoy usando SwingWorker para ejecutar algunas tareas de carga pesada en una aplicación que estoy realizando. Aunque hoy en día llegué a través de la clase Ejecutor y este ejemplo:Diferencias entre SwingWorker y Executor
Executors.newCachedThreadPool().execute(new Runnable() {
public void run() {
someTask();
});
Puede alguien explicar las razones por las que se podría usar en lugar de SwingWorker el ejemplo anterior? Esta es la forma en que actualmente estoy usando SwingWorker:
SwingWorker worker = new SwingWorker() {
protected Object doInBackground() {
someTask();
return null;
}
};
worker.execute();
Comprobar [API] (http://docs.oracle.com/ javase/7/docs/api/javax/swing/SwingWorker.html) y verá que SwingWorker implementa la interfaz Future (y Runnable), que se devuelve desde el método 'submit (...)' de ExecutorService. Se ha creado un SwingWorker para interactuar bien con el hilo del evento Swing. –