解释为什么wait()和notify(), notifyAll()要放在同步块中

Posted allenduke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解释为什么wait()和notify(), notifyAll()要放在同步块中相关的知识,希望对你有一定的参考价值。

首先,wait()是释放锁的,因此wait()之前要先获得锁,而锁在同步块开始的时候获得,结束时释放,即同步块内为持有锁的阶段。

那为什么要设计同步块呢?或者说没有同步块会怎样呢?

技术图片

 

以上是关于解释为什么wait()和notify(), notifyAll()要放在同步块中的主要内容,如果未能解决你的问题,请参考以下文章

线程中的current thread not owner异常错误

Java多线程系列---“基础篇”05之 线程等待与唤醒

如何在不是线程的对象上调用 wait() 和 notify() 方法?

面试官:为什么 wait/notify 必须与 synchronized 一起使用??

wait和notify

JUC并发编程 -- 为什么需要wait/notify方法 & 原理之 wait / notify & wait() 和 notify() API介绍