黑马程序员技术交流社区

标题: 关于多线程生产与消费问题 [打印本页]

作者: 一个铃,一颗珠    时间: 2013-8-7 17:43
标题: 关于多线程生产与消费问题

Thread-2__消费者___名称:洗衣服1782
Thread-0__生产者__名称:洗衣服1783
Thread-3__消费者___名称:洗衣服1783
Thread-1__生产者__名称:洗衣服1784
经常打印出的是先有消费者后有生产者,应该是先有生产者后有消费者的,是什么原因出现先消费后生产的呢?

作者: yangqing    时间: 2013-8-7 18:12
楼主还是把 代码发出来会比较好。   
多线程随机执行代码可能导致以上问题 , 如果代码有加锁可能是释放锁的代码放在了执行语句的里面导致 生存者还没执行结束就执行消费者了。
作者: xkfxm    时间: 2013-8-7 22:23
此处是部分输出吗?看上面好像没问题啊,是先生产再消费吧?看后面的编号,应该是自增的,生产一个消费一个
作者: 詹磊    时间: 2013-8-8 11:23
楼主看看是不是设置flag的时候让消费者的线程先开始的,让生产者等待的。

作者: 付建超    时间: 2013-9-7 10:35
这样看上去没什么错误啊,看你的洗衣服编号,是先生产再消费的啊,可能是一屏没放下,你的洗衣服1782
其实是在上一屏,只是显示过去了。
要不还是发出来你的代码吧,那样的话看问题更直观一些。。。。。
作者: 奔跑的二叉树    时间: 2013-9-16 15:32
贴代码吧,这样好解决一些,生产者刚进入锁,要执行生产,就被消费者抢走了CPU执行权,导致的吧,要加一个while循环,设一个flag,作为标记,让线程每次进入时都要判断flag的状态。
作者: 赖龙威    时间: 2013-10-2 00:07
看你后面的数字,貌似没有错的样子
作者: kellyzyb    时间: 2013-10-9 21:31
这个还是放代码吧。思路:首先要生产出来 才能消费, 那么在程序做if判断的时候,将条件设定成先执行生产的线程代码吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2