文章目录
- 1. API 介绍
- 2. 怎么使用wait、notify
- 2.1 sleep 和 wait 的区别
- 2.2 sleep 和 wait 的使用模板
1. API 介绍
都属于 Object 对象的方法。必须获得此对象的锁,才能调用这几个方法
,只有重量级锁才能调用wait、notify
- obj.wait() 让进入 object 监视器的线程到 waitSet 等待
- obj.notify() 在 object 上正在 waitSet 等待的线程中挑一个唤醒
- obj.notifyAll() 让 object 上正在 waitSet 等待的线程全部唤醒
2. 怎么使用wait、notify
2.1 sleep 和 wait 的区别
- sleep 是
Thread
方法,而 wait 是Object
的方法 - sleep 不需要强制和 synchronized 配合使用,但 wait 需要和
synchronized
一起用 sleep
在睡眠的同时,不会释放对象锁
的,但wait
在等待的时候会释放对象锁
- 状态都为 TIMED_WAITING
2.2 sleep 和 wait 的使用模板
使用while即使notify all都唤醒了,但是自己这个线程条件还不满足时再次进入while,再次wait。