首页 新闻 搜索 专区 学院

哪里有问题呢(生产消费凌乱的)?学得有点迷糊了,求解决

0
悬赏园豆:10 [已解决问题] 解决于 2020-06-24 16:24

问题:生产消费出现的顺序凌乱的,输出结果如图:

代码如下:




下面是一个类里面的


忧桑の民工的主页 忧桑の民工 | 初学一级 | 园豆:156
提问于:2020-05-26 15:58

建议:1,格式化代码;2:说明错误情况

会长 3个月前
@会长: 已经想办法处理,它这个编辑器确实很无奈!麻烦看看啥问题呢,谢谢。 忧桑の民工 3个月前

@忧桑の民工: 这个编辑器支持markdown的

会长 3个月前

@会长: 问题呢?

忧桑の民工 3个月前

@忧桑の民工: 不会

会长 3个月前

没问题。就是这样子的。生产者-消费者之间并不需要保持顺序,消费者是有资源就拿来消费了,不关心生产者的当前状态。

。淑女范erり 3个月前

@。淑女范erり: 不是设置了锁吗 设置了应该就会按照生产了一个消费一个的顺序呢?

忧桑の民工 3个月前

@忧桑の民工: 加锁和访问时序没有关系的。这个不是问题。。

。淑女范erり 3个月前

@。淑女范erり: ok,谢谢

忧桑の民工 3个月前
< >
分享
最佳答案
0

消费与生产,(1)它可以做到生产一个消费一个,按顺序进行。(2)也可以不论顺序,有就消费。
1、2点暂且不论,我想你的问题,应该是为什么消费者是从 9 先打印,然后到10.而不是从10开始打印,然后再打印 9。消费者之所以先打印9,再打印10。因为你的代码写得太乱了!!看得头疼!!System.out.println(“消费了第:” + pop().id + "鸡") ,这句话,可以被拆成2部分执行。第一部分 pop().id,第二部分才是打印。看到这里,你就应该要明白了。第一条线程:第一部分执行完毕,第二部分挂起;第二条线程开始执行,2部分皆执行完毕;第一条线程的第二部分才开始执行。所以会出现以上效果。

收获园豆:10
南小鸟 | 菜鸟二级 |园豆:390 | 2020-06-09 09:25

thx

忧桑の民工 | 园豆:156 (初学一级) | 2020-06-24 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册