void wait()
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
void wait(long timeout)
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。
void wait(long timeout, int nanos)
导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。
在没添加时间条件时,线程必须等其他线程notify()或notifyAll()本线程才会被唤醒,否则继续等,加入时间后
该生产的线程就有了最大等待时间timeout,时间到wait就返回。这时候该线程如果这个时候获得了对象的锁,那么可以向下执行,即执行生产
该若生产线程在没等到最大等待时间timeout,消费线程已经退出并释放了锁,调用notify唤醒了生产线程,这时候也被唤醒了可以往下执行,进行生产
消费线程同理
|