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();