正在回答
同学你好,1. synchronized只是保证同一时刻只有一个线程可以执行某个方法。无法保证线程的执行顺序。
2. 在Bank案例中的存取款中加入循环(创建多个线程),也会出现与生产、消费案例相同的问题。如下图所示:只是原本的线程较少,产生的随机性不明显。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,同学是不理解,为什么使用了synchronized还是产生多个消费或多个生产的问题吗?如果是,1. synchronized只是保证同一时刻只有一个线程可以执行某个方法。无法保证线程的执行顺序。所以可以产生多个消费或多个生产的问题。如下所示:
2. 此时使用wait()方法是为了中断方法的执行,处于等待的状态,使其生产一个消费一个。实现思路如下:
初始flag为false,在get()方法中,if(!flag)为true,消费的线程执行wait()方法,处于等待的状态
set()方法中,if(flag)为false,不执行if条件,向下执行,输出生产XX,并设置flag = true;调用notifyAll()方法,唤醒所有线程。
再执行get()方法,此时的flag为true,if(!flag)为false,不执行if条件,向下执行,输出消费XX,再设置flag 为false,以此循环。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星