【发布时间】:2020-09-27 00:13:37
【问题描述】:
我有一个线程休眠了一段时间并连续做一些工作。
public void run() {
while(true) {
try {
Thread.sleep(SOME_RANDOM_TIME);
} catch (InterruptedException e) {
return;
}
doSomeLabour();
}
}
我有一堆这样的线程在Executors 上运行。当我在执行程序上调用shutdownNow 时,线程有时不会被终止。 shutdownNow 所做的只是在所有正在运行的线程上调用 interrupt 并且不接受任何新线程。
所以,基本上,我只是中断所有线程。
我明白,当 thread 不处于睡眠状态并被中断时,我的代码不会发生任何事情;但是,下次当线程在完成工作后尝试休眠时,sleep(..) 是否应该抛出 InterruptedException,因为该线程上仍然设置了中断标志?
【问题讨论】:
标签: java threadpool interrupt java-threads interrupted-exception