关于java中线程的wait()和notify()方法

时间:2011-03-01 05:01:14

标签: java multithreading synchronization

我知道线程wait()notify()的机制,但我无法理解为什么wait()notify()方法应该在synchronized中块?这是强制性的吗?

提前致谢!

1 个答案:

答案 0 :(得分:4)

  1. 在调用wait / notify时强制同步:是

  2. 为什么?:请注意不需要同步。这意味着线程A可以在另一个线程B正在调用wait()(在同一个对象上)的同时完全同时调用notify()。假设线程B执行了 wait()方法的一部分并且被上下文切换以服务线程A.因此等待的内部数据结构现在可能处于损坏状态。现在 notify()方法基本上适用于相同的数据结构,现在处于无效状态。因此整个等待/通知可以进行折腾。同步保证没有其他方法可以调用wait / notify,如果已经打开了其中一个方法。