首页 > 解决方案 > 调用 notify() 与结束同步块 Java

问题描述

我是线程编程的新手,我有一个像下面这样的困惑。让我们来看看下面的代码块。

synchronized(obj)
{
   //do operations
   //obj.notify();
   //post operations
   // last statement 
}

现在直到“最后一条语句”执行,即使在调用 notify() 之后,obj 的监视器也不会被释放。那么值得在这里调用 notify() 吗?因为反正当同步块退出时,不等于调用notify()。

标签: javasynchronizednotify

解决方案


不,当您退出同步块时,既notify()不会调用也不会notifyAll()调用所有其他等待同一个锁调用的线程wait()将不会被唤醒。

以下是关于在离开同步块时自动调用notifyAll() Automatic notify()/notifyAll()的一些缺点


推荐阅读