在while循环中包含run方法的内容是否足以检查THread是否因为任何Thread可中断而被中断
public void run () {
while (!Thread.interrupted()) {
do something.
}
}
答案 0 :(得分:2)
线程如何支持自己的中断?这取决于什么 它目前正在做。如果线程经常调用方法 抛出InterruptedException,它只是从run方法返回 在它捕获了那个例外之后。
例如,如果你的线程在工作之间进入睡眠状态,那么最好抓住InterruptedException
。
public void run(){
while(true)
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// We've been interrupted: no more messages.
return;
}
}
如果您的线程长时间运行,您可以定期检查调用Thread.interrupted,如果收到中断,则返回true。
答案 1 :(得分:0)
interrupted()是静态方法,用于检查当前线程是否被中断。 isInterrupted()是一个检查调用的Thread对象的实例。 对于当前线程使用
if(!(Thread.interrupted())){//do something}
当Thread对象调用时使用if(myThread.isInterrupted()){//do something
}