java的等待通知是用wait和notify来实现的。
//等待
syn(对象){
while(条件不满足){
//一个对象调用了wait方法后将释放该对象持有的锁
对象.wait()
}
//业务逻辑
}
//通知
syn(对象){
//业务逻辑,改变条件
//调用notify和notifyAll不会释放锁
对象.notify();//对象.notifyAll();
}//syn结束后才会释放锁
总结:
1.有synchronized的地方不一定有wait,notify
2.有wait,notify的地方必有synchronized.这是因为wait和notify不是属于线程类,而是每一个对象都具有的方法,而且,这两个方法都和对象锁有关,有锁的地方,必有synchronized。
3.对象调用wait会释放对象的锁,而调用notify则不会释放锁。