В настоящее время у меня есть две темы SwingWorker, работающие на фоне. Если возникает исключение, метод перестает работать, но поток все еще запущен.Как отменить выполнение SwingWorker?
Как сделать, чтобы остановить выполнение и убить поток doInBackground()
, если возникло исключение?
this.cancel(true)
не разрушать/закрывать нить. Как я могу это достичь?
@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;
}
}
Я вижу эти потоки в отладке 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
Можете ли вы подтвердить, что 'doInBackground()' возвращает и не блокирует внутри цикла while (true)? – jfpoilpret
Да, я отлаживал код и в него включается исключение, возвращающее false. –