wait():让持有该对象锁的线程等待
notify():唤醒任意一个处于waiting状态的线程
notifyAll():唤醒所有处于waiting状态的线程。
他们之间的关系是:通过调用对象的wait()方法使线程暂停运行,通过notify/notifyAll方法唤醒wait()暂停的线程。
注意:
- 调用对象的wait()、notify()、notifyAll()方法需要拥有对象的监视锁,即他们只能在同步方法(块)中使用
- 调用wait()方法会使线程暂停并让出CPU资源,同时释放持有的对象的锁。
- 多线程使用notify()容易发生死锁,一般使用notifyAll()
- 被notify()、notifyAll()唤醒后,线程不会立即执行,而是需要重新竞争对象锁,获得锁的线程可以从wait处继续向下执行。
网友评论