在同步代码段(java)中使用wait()而不使用notify()

Mic*_*Boy 2 java multithreading synchronization synchronized wait

我想知道是否可以在不使用notify()的情况下对同步代码使用wait(),如下所示:

wait_on(B):
    synchronized(B.monitor) {
    B.count--
        while (B.count > 0) { /* wait */ }
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢

Nat*_*hes 5

您需要notify或notifyAll来唤醒线程的等待状态.在您的示例中,代码将进入等待并保持在那里(除非被中断).

知道等待,产量和睡眠之间的区别.等待需要在同步块中调用,一旦输入等待锁定被释放,线程将保持该状态,直到调用notify.Yield将线程返回到就绪池,并让调度程序决定何时再次运行它.睡眠意味着线程在一段固定的时间内处于休眠状态(并从那里进入就绪池).

确保在正在同步的同一个对象上调用wait(这是它的B.monitor).