wai()是Object類提供的,一般與synchronized聯合使用。調用wait之後會釋放鎖,導致線程等待。喚醒進程使用notify()或者notifyAll()。
await()Condition類是當中的,一般與Lock聯合使用。
舉例
synchronized(obj){
obj.wait();//消費方沒東西了,等待
}
synchronize(obj){
obj.notify();//有東西了,喚醒 消費進程
}
而Lock則是由Lock控制鎖,Condition來控制被阻塞線程
// 消費者
lock.lock();
condition.await();
lock.unlock();
//生產者
lock.lock();
condition.signal();
lock.unlock();