「每天一道面试题」为什么notify/wait方法必须在synchronized中

notify/notifyAll/wait这3个方法必须处于synchronized代码块或者synchronized方法中,否则就会抛出IllegalMonitorStateException异常。

这是因为调用这三个方法之前必须拿要到当前锁对象的监视器monitor对象,也就是说notify/notifyAll和wait方法依赖于monitor对象,又因为monitor存在于对象头的Mark Word中(存储monitor引用指针),而synchronized关键字可以获取monitor ,所以,notify/notifyAll和wait方法必须在synchronized代码块或者synchronized方法中调用。

相关文章:

  • 2021-10-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-30
猜你喜欢
  • 2022-02-22
  • 2021-10-29
  • 2021-05-30
  • 2021-05-01
  • 2021-04-24
  • 2022-12-23
相关资源
相似解决方案