0

notifyAll()在查看Object 类下的方法的 javadoc 时,出现了以下几行:

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

重点是:

当前线程在等待时被中断

这是什么意思?线程在等待时可以中断吗?如果是,为什么?它有什么用?

4

2 回答 2

2

Java中“线程被中断”的意思是线程的中断标志已经被设置,仅此而已。但是,JDK 的大多数使线程等待的方法会立即发现这一点并退出等待状态,并抛出 InterruptedException。您一直在阅读的方法就是这种情况。

于 2013-06-30T08:36:24.797 回答
2

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

waitingThread.interrupt();

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

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

于 2013-06-30T08:18:27.233 回答