中断异常发生的原因

时间:2013-06-30 07:23:04

标签: java interrupted-exception

在Object类下查看notifyAll()方法的javadoc时,通过以下几行:

  

如果当前线程在等待之前或等待时被任何线程中断,则a   抛出InterruptedException。在如上所述恢复此对象的锁定状态之前,不会抛出此异常。

重点是:

  

当前线程在等待时被中断

这意味着什么?线程在等待时是否可以被中断? 如果是,为什么?有什么用?

2 个答案:

答案 0 :(得分:2)

如果另一个线程调用,则在等待时可以中断线程:

waitingThread.interrupt();

如果您自己自己做,但是如果您使用框架来管理线程(通常是执行程序服务),并调用一些中断底层线程的方法(例如shutdownNow或者你在future.cancel(true);方法返回的Future上调用submit

中断机制是Java如何让一个线程告诉另一个线程停止它正在做什么,因此非常有用。

答案 1 :(得分:2)

Java中“线程被中断”的含义意味着已经设置了线程的中断标志,仅此而已。但是,使线程等待的JDK的大多数方法都会立即找到并退出等待状态,抛出InterruptedException。您正在阅读的方法就是这种情况。