线程wait与notify的使用
- wait
释放当前锁,让出cpu资源,使当前线程等待.使用场景为先通过synchronized获取锁之后,在该同步代码块中使用
wait()
方法. -
notify与notifyAll 在一个同步代码段中唤醒一个或多个处于等待的线程,在同步代码结束或遇到
wait()
释放当前锁区别:
notify: 唤醒一个等待的线程,若存在多个则取决于操作系统的多线程管理(会唤醒其中一个) notifyAll: 唤醒所有的等待线程,优先级同样取决于操作系统
-
当线程被唤醒时,
wait()
方法之后的逻辑继续开始执行 - 若未加锁进行
wait()
或notify()
/notifyAll()
的调用,会抛出IllegalMonitorStateException