线程
线程生命周期
- 新建
- 就绪
- 运行
- 阻塞
- 死亡
线程通信
-
wait
使线程放弃监视器进入阻塞状态,当获取到同步监视器后,将再wait阻塞处继续往下执行
-
notify
唤醒一个因调用wait方法阻塞的线程
-
notifyAll
唤醒所有因调用wait方法处于阻塞状态的线程
sleep与wait
sleep
是Thread对象的静态方法,而wait
是Object对象的方法sleep
会使得当前线程放弃CPU资源,让其他线程有获取CPU执行权的机会,但不会释放监视器。休眠时间期满后,该线程不一定会立即执行,这是因为其它线程可能正在运行。而wait
会释放监视器,进入阻塞状态,直到其他线程调用notify
或notifyAll
方法来唤醒wait
,notify
和notifyAll
只能在同步控制方法或者同步控制块里面使用,而sleep
可以在任何地方使用sleep
必须捕获异常,而wait
,notify
和notifyAll
不需要捕获异常