我已阅读http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html
我决定通过以下方式使我的锁无法取消
try {
lockedRecords.wait();
} catch (InterruptedException e) {
interrupted = true;
}
但是有必要
} finally {
if (interrupted) {
Thread.currentThread().interrupt();
}
}
本文说您应该调用interrupt()来保留中断状态。我仍然很模糊,所以如果设置.interrupt怎么办?接下来发生什么?有点迷失了..任何输入?
它给我的程序带来什么价值?请以通俗易懂的方式进行解释,不胜感激:D
最佳答案
这里重要的是示例中未编写的代码。
示例(getNextTask
)中的方法可用于:
while (!Thread.interrupted()) {
Task task = getNextTask(queue);
doSomething(task);
}
System.out.println("The thread was interrupted while processing tasks.");
System.out.println("...stopped processing.");
除非有人中断运行此循环的线程,否则上述
while
循环将永远执行。如果中断状态没有像在
getNextTask
中那样重置,当某人试图在线程在queue.take
中的getNextTask
中中断该线程时,该中断将丢失,我上面编写的代码位将丢失永不停止循环。IBM网站上的示例的全部要点是,吞下中断时必须非常小心,因为它可能会意外使线程无法中断。
关于java - 管理InterruptedException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7004037/