在Object类下查看notifyAll()
方法的javadoc时,通过以下几行:
如果当前线程在等待之前或等待时被任何线程中断,则a 抛出InterruptedException。在如上所述恢复此对象的锁定状态之前,不会抛出此异常。
重点是:
当前线程在等待时被中断
这意味着什么?线程在等待时是否可以被中断? 如果是,为什么?有什么用?
答案 0 :(得分:2)
如果另一个线程调用,则在等待时可以中断线程:
waitingThread.interrupt();
如果您自己自己做,但是如果您使用框架来管理线程(通常是执行程序服务),并调用一些中断底层线程的方法(例如shutdownNow
或者你在future.cancel(true);
方法返回的Future上调用submit
。
中断机制是Java如何让一个线程告诉另一个线程停止它正在做什么,因此非常有用。
答案 1 :(得分:2)
Java中“线程被中断”的含义意味着已经设置了线程的中断标志,仅此而已。但是,使线程等待的JDK的大多数方法都会立即找到并退出等待状态,抛出InterruptedException。您正在阅读的方法就是这种情况。