[TOC]
线程之间通讯
- 轮询方式,浪费cpu计算资源
- 通知等待机制,通过wait/notify/notifyAll实现。
notify 和 notifyAll 区别比较
使用wait/notify/notifyAll实现线程间通信的几点重要说明
notify可能会引起死锁,因此一般提倡使用notifyAll。
Thread.sleep()方法
sleep(A)方法: 告诉 cpu,在接下来的指定时间A内,我不需要使用cpu。经过指定时间A后,我才会参与cpu的使用竞争中。
因此,sleep()方法被调用后,接下来的代码被执行的时刻 一般会大于 A。
Thread.sleep(0)
Thread.sleep(0) 表示主动放弃当前的时间片,手动触发一次操作系统分配时间片。
sleep方法和wait方法有什么区别
最大的不同点:wait释放锁,sleep不释放锁。wait用于线程交互,sleep用于暂停执行。
其他不同:
- wait是object方法。sleep是Thread的静态方法。
- wait在synchronized中被调用。sleep任何地方都可以。
- sleep需要捕捉异常。wait不需要。