等待/通知机制是指,一个线程A调用对象O的wait()方法进入等待状态,线程B调用对象O的notify()/notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而执行后续的操作。上述两个线程通过对象O来完成交互,wait()和notify()的关系就像一对开关信号,用于完成等待方和通知方之间的交互工作完成线程之间的通信。
等待/通知机制的范式
等待方:
//1.获取对象的锁
synchronized(obj){
while(条件不成立){
//2.如果条件不成立,那么就调用对象的wait()方法。被通知时仍需要检查条件
obj.wait();
}
//3.继续执行下面的逻辑
}
通知方
//1.获取对象的锁
synchronized(obj){
//2.改变条件状态
flag=false;
//3.通知在该对象上等待的其它线程
obj.notifyAll();
}