public void produce() {
synchronized (this) {
while (mBuf.isFull()) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
mBuf.add();
notifyAll();
}
}
public void consume() {
synchronized (this) {
while (mBuf.isEmpty()) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
mBuf.remove();
notifyAll();
}
}
代码段摘至网络,不是很清楚运行时 wait() 和notifyAll() 为什么不报错, 这里的wait() 是如何持有monitor的
代码出处地址:https://www.jianshu.com/p/25e243850bd2?appinstall=0