目录
1.wait的使用
(1)使用wait和notify函数来实现线程间(一般为>3的多线程)通信。
(2)永远在synchronized的函数或对象中使用wait、notify、notifyAll,不然虚拟机会生成IllegalMonitorStateException。
(3)永远在while循环里而不是if语句下使用wait。循环会在线程睡眠前后都检查wait的条件,并在条件实际上并未改变的情况下处理唤醒通知。
(4)永远在多线程间共享的对象上使用wait。
(5)唤醒机制更倾向于notifyAll,而不是notify(notify随机唤醒线程,notifyAll唤醒所有线程)。
2.wait与sleep的比较
(1)所属对象:sleep是Thread的方法,wait是Object的方法。
(2)sleep监控状态依然保持,不会释放对象锁,不会影响其它进程对象的运行;wait释放对象锁,使其他线程可以使用同步控制块或者方法。
(3