2016-09-03 17 views
1

当一个线程t调用对象uwait()方法,它进入等待状态,直到另一个线程对同一对象uOR另一个线程调用interrupt()方法上调用notify()等待线程t。考虑到等待的线程不消耗CPU周期,等待线程如何检查wait()中的中断状态并抛出InterruptedException检查从等待中的中断状态()

也就是说,我想下面的代码中wait()

if (Thread.interrupted()) // Clears interrupted status! 
    throw new InterruptedException(); 

回答

4

中处于等待状态的线程必须恢复再次成为RUNNABLE。

此恢复正在较低级别完成,并且由通知或中断调用。

等待线程不执行任何代码。而是设置中断标志(在较低的级别),线程恢复 - 状态RUNNABLE - 一旦它再次运行,中断状态将被检查。

+0

太棒了,我现在画一幅画。非常感谢。 –