Thread InterruptedException不会被睡眠抛出

问题描述 投票:0回答:1

我有一个线程休眠一段时间并连续进行一些工作。

public void run() {
    while(true) {
        try {
            Thread.sleep(SOME_RANDOM_TIME);
        } catch (InterruptedException e) {
            return;
        }
        doSomeLabour();
    }
}

我有一堆在Executors上运行的线程。当我在执行程序上调用shutdownNow时,线程有时不会终止。 shutdownNow所做的只是在所有正在运行的线程上调用interrupt,并且不接受任何新线程。

所以,基本上,我只是中断所有线程。

我知道当线程中断时,如果线程不处于睡眠状态,那么按照我的代码,什么也不会发生。但是,当线程在完成工作之后尝试进入睡眠状态时,由于该线程上仍设置了中断标志,因此睡眠下次应该抛出InterruptedException吗?

java threadpool interrupt java-threads interrupted-exception
1个回答
0
投票

怎么样

while(!Thread.currentThread().isInterrupted()) {
    try {
        Thread.sleep(SOME_RANDOM_TIME);
    } catch (InterruptedException e) {
        return;
    }
    doSomeLabour();
}

代替?

© www.soinside.com 2019 - 2024. All rights reserved.