У меня есть поток, выполняющий задачу анализа файлов. Его набор как поток демона, который запускается в фоновом режиме от запуска tomcat до выключения, выполняющего свою задачу.Прекращение резьбы с использованием метода прерывания
Я ищу для обработки прерывания потока при прерывании и завершении работы сервера. Я хочу знать, правильно ли это происходит.
class LoadingModule{ // Thread is started from here
threadsStartMethod() {
Thread t = new Thread(FileParseTask);
t.setDaemon(true);
t.start();
}
}
Class FileParseTask implements Runnable {
@Override
public void run() {
try {
while(!Thread.currentThread.isInterrupted) {
// poll for file creation
// parse and store
}
} catch(Exception exit) {
log.error(message);
Thread.currentThread.interrupt();
}
}
}
будет ли это чисто выходить из потока во всех сценариях?
мне нужно вызвать Thread.CurrentThread.interrupt() в блоке поймать, чтобы сделать установить флаг прерывания в true? ИЛИ делает while (! Thread.CurrentThread.isinInterrupted) автоматически получает значение как истинное при некотором прерывании? –
Наверное, нет. если вы находитесь внутри блока if (instanceof Interruptedexception), я думаю, что у вас достаточно информации, чтобы вырваться из цикла. Также вы можете проверить состояние текущего потока, если вам нужно – efekctive
, почему вызывать прерывание() из catch http://stackoverflow.com/questions/4906799/why-invoke-thread-currentthread-interrupt-when-catch-any- interruptexception –