正在回答
2回答
同学你好,在如下的代码中,flag为false,get()方法中,if(!flag)为true,消费的线程执行wait()方法,处于等待的状态。set()方法中,if(flag)为false,不执行if条件,向下执行,输出生产XX,并设置flag = true;调用notifyAll()方法,唤醒所有线程。再执行get()方法,此时的flag为true,if(!flag)为false,不执行if条件,向下执行,输出xiaofXX,再设置flag 为false,以此循环。
这里并不是当flag是true才开始执行set方法,而是当flag为false时,set()方法中if(flag)为false,不执行wait()方法,生产的线程没有处于等待状态,才执行set()方法中的输出语句。
祝:学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星