Не беспокойтесь, в документации для interrupt
написано :
Если этот поток заблокирован при вызове wait (), wait (long) или wait(long, int) методы класса Object, или методы join (), join (long), join (long, int), sleep (long) или sleep (long, int), методы этого класса, затем егостатус прерывания будет очищен и получит исключение InterruptedException.
Таким образом, ваш поток получит InterruptedException
, только если вы находитесь в состоянии блокировки / ожидания / ожидания.Если вы работаете, поток не получит исключение, пока не войдет в одно из этих состояний.
Ваш цикл должен быть:
while(!Thread.currentThread().isInterrupted()) // <- something of the sort here
{
try{
// do work
} catch (InterruptedException e){
// clean up
}
}
Обновление:
Кроме того, документация гласит:
Если не выполняется ни одно из предыдущих условий, будет установлен статус прерывания этого потока.