当生产者与消费者各位两个实例,A、C为生产者B、D为消费者
生产者生产完毕后处于等待,阻塞住,唤醒两个消费者
消费者B被唤醒后抢到锁并消费后又处于等待,等待的时候会释放锁
这时消费者D从上次的wait()后面继续执行
由于前面判断是if
所以不会返回再判断
就继续往下执行
当将if改为while判断语句时
在程序要跳出循环前会进行语句判断
B减过一次资源已经为0
D唤醒后就会进入循环发现为0就会进入循环体就会调用wait()方法进入等待
解决并发中的虚假唤醒
于 2022-10-15 09:58:39 首次发布