问题:生产消费出现的顺序凌乱的,输出结果如图:
代码如下:
下面是一个类里面的
消费与生产,(1)它可以做到生产一个消费一个,按顺序进行。(2)也可以不论顺序,有就消费。
1、2点暂且不论,我想你的问题,应该是为什么消费者是从 9 先打印,然后到10.而不是从10开始打印,然后再打印 9。消费者之所以先打印9,再打印10。因为你的代码写得太乱了!!看得头疼!!System.out.println(“消费了第:” + pop().id + "鸡") ,这句话,可以被拆成2部分执行。第一部分 pop().id,第二部分才是打印。看到这里,你就应该要明白了。第一条线程:第一部分执行完毕,第二部分挂起;第二条线程开始执行,2部分皆执行完毕;第一条线程的第二部分才开始执行。所以会出现以上效果。
thx
建议:1,格式化代码;2:说明错误情况
– 会长 4年前@忧桑の民工: 这个编辑器支持markdown的
– 会长 4年前@会长: 问题呢?
– 忧桑の民工 4年前@忧桑の民工: 不会
– 会长 4年前没问题。就是这样子的。生产者-消费者之间并不需要保持顺序,消费者是有资源就拿来消费了,不关心生产者的当前状态。
– 。淑女范erり 4年前@。淑女范erり: 不是设置了锁吗 设置了应该就会按照生产了一个消费一个的顺序呢?
– 忧桑の民工 4年前@忧桑の民工: 加锁和访问时序没有关系的。这个不是问题。。
– 。淑女范erり 4年前@。淑女范erり: ok,谢谢
– 忧桑の民工 4年前