Actualmente tengo dos hilos SwingWorker trabajando en segundo plano. Si se produce una excepción, el método se detiene para funcionar, pero el hilo aún se ejecuta.¿Cómo se cancela la ejecución de un SwingWorker?
¿Cómo hago para detener la ejecución y matar el hilo del doInBackground()
si ocurre una excepción?
this.cancel(true)
No destruir/cerrar el hilo. ¿Cómo puedo conseguir esto?
@Override
protected Boolean doInBackground() throws Exception {
try {
while (true) {
//some code here
return true;
}
} catch (Exception e) {
this.cancel(true); //<-- this not cancel the thread
return false;
}
}
Veo estos hilos en la depuración de Netbeans.
'AWT-EventQueue-0' em execução
'AWT-Windows' em execução
'SwingWorker-pool-1-thread-1' em execução
'SwingWorker-pool-1-thread-2' em execução
//*em execução = in execution
¿Puede confirmar que 'doInBackground()' devuelve y no bloquea dentro del bucle 'while (true)'? – jfpoilpret
Sí, depuré el código y entra en la excepción que devuelve falso. –