java - 从 wait() 中检查中断状态

标签 java multithreading interrupt

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

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

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

最佳答案

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

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

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

关于java - 从 wait() 中检查中断状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39304037/

相关文章:

java - Spring Integration 消息驱动 channel 适配器标签不支持 bean 名称?

java - 异步和同步模式的并发

c - 试图了解 asm 中断,特别是 16h func 01H

operating-system - 在操作系统中,系统调用和中断之间有什么区别?

interrupt - 在不中断 UART 的情况下写入非 volatile 存储器会中断 STM32F4XX 上的执行

java - 垃圾收集器 (.net/java) 是实时系统的问题吗?

java - Spring Integration Java DSL HTTP 在超时错误内未收到回复

c++ - 将程序 (.exe) 作为线程执行 - Window C++

c - c 中的线程,我在这里缺少什么?

java - NumberFormat.parse 返回意外结果