可以将put方法和add方法中的while改成if吗?

来源:7-6 用wait/notify实现

index2

2020-01-31

悟空老师,我看了视频后自己默写了一遍,自己写的时候和您的代码有些不同。其中可不可以将put方法和add方法中的while改成if?图片描述图片描述

写回答

2回答

悟空

2020-01-31

不可以,如果多个线程同时被唤醒,那么都需要再次检查是否满足被唤醒的条件,因为其中一个线程被唤醒后继续执行,另外的线程这个时候就需要重新进入等待状态,如果用while就可以实现,但是if无法实现。

1
9
悟空
回复
LittleGoblin
这里“都需要再次检查是否满足被唤醒的条件”,指的是比较while和if的话,while里面是wait,那么就算从这行代码wait()继续往下执行了,想跳出while的话,也要满足while的退出条件
2022-11-07
共9条回复

fengshenwonderful

2020-05-26

如果只有一个生产者线程和一个消费者线程是可以的吧。

0
1
悟空
恩是的
2020-05-26
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程