Java 从等待()内检查中断状态

Java 从等待()内检查中断状态,java,multithreading,interrupt,Java,Multithreading,Interrupt,当线程t调用对象u上的wait()方法时,它将进入等待状态,直到另一个线程调用同一对象u上的notify()或另一个线程调用等待线程t上的interrupt()方法。考虑到等待线程不消耗CPU周期,等待线程如何能够在wait()中检查中断状态并抛出InterruptedException 也就是说,我想象一下wait()中的以下代码: 处于等待状态的线程必须恢复才能再次运行 此恢复在较低级别上完成,并由通知或中断两种方式调用 等待线程不执行任何代码。相反,设置了中断标志(在较低级别),线程将恢复

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

也就是说,我想象一下
wait()
中的以下代码:


处于等待状态的线程必须恢复才能再次运行

此恢复在较低级别上完成,并由通知或中断两种方式调用


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

处于等待状态的线程必须恢复才能再次运行

此恢复在较低级别上完成,并由通知或中断两种方式调用

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

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