前提:wait和notify、notifyAll都只能在
同步代码块或者
同步方法中调用,且要通过
锁对象进行调用,否则会抛出
IllegalMonitorStateException
1.wait
-
wait(),当前线程进入 无限等待状态,必须被唤醒才能继续执行,调用后会释放锁对象
-
wait(long timeout),wait(long timeout,int nanos),当前线程进入等待状态,可以被提前唤醒,但在指定时间后会自动唤醒
2.notify
-
notify(), 随机唤醒一个在锁对象上调用wait的线程
-
notifyAll(),唤醒 全部在锁对象上调用wait的线程
例子:
![](https://i-blog.csdnimg.cn/blog_migrate/18cec16c6f0bb60d67e5ecd70cf39a5a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/781769e8388f9a6b08d7d9e6e64dd165.png)