A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一个铃,一颗珠 中级黑马   /  2013-8-7 17:43  /  1821 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

8 个回复

倒序浏览
楼主还是把 代码发出来会比较好。   
多线程随机执行代码可能导致以上问题 , 如果代码有加锁可能是释放锁的代码放在了执行语句的里面导致 生存者还没执行结束就执行消费者了。
回复 使用道具 举报
此处是部分输出吗?看上面好像没问题啊,是先生产再消费吧?看后面的编号,应该是自增的,生产一个消费一个
回复 使用道具 举报
楼主看看是不是设置flag的时候让消费者的线程先开始的,让生产者等待的。
回复 使用道具 举报
这样看上去没什么错误啊,看你的洗衣服编号,是先生产再消费的啊,可能是一屏没放下,你的洗衣服1782
其实是在上一屏,只是显示过去了。
要不还是发出来你的代码吧,那样的话看问题更直观一些。。。。。
回复 使用道具 举报
贴代码吧,这样好解决一些,生产者刚进入锁,要执行生产,就被消费者抢走了CPU执行权,导致的吧,要加一个while循环,设一个flag,作为标记,让线程每次进入时都要判断flag的状态。
回复 使用道具 举报
看你后面的数字,貌似没有错的样子
回复 使用道具 举报
这个还是放代码吧。思路:首先要生产出来 才能消费, 那么在程序做if判断的时候,将条件设定成先执行生产的线程代码吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马