在wait()中检查中断状态



当线程t调用对象u上的wait()方法时,它将进入等待状态,直到另一个线程调用同一对象u上的notify() 另一个线程调用等待线程t上的interrupt()方法。考虑到等待线程不消耗CPU周期,等待线程如何可能在wait()内检查中断状态并抛出InterruptedException ?也就是说,我想象wait()中的代码如下:

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

处于WAITING状态的线程必须被恢复才能再次变为RUNNABLE。

这个恢复是在较低的级别完成的,由通知或中断两者调用。

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

最新更新