黑马程序员技术交流社区

标题: 老毕讲的----多生产者多消费者问题 [打印本页]

作者: 回天之力    时间: 2013-10-24 00:26
标题: 老毕讲的----多生产者多消费者问题
本帖最后由 回天之力 于 2013-10-25 18:25 编辑

图中是讲  多生产者多消费者问题  时代一个截屏。
不是 set()方法都上着锁吗,怎么t2还可以进去执行代码呢?虽然整体看懂了,但这点有点疑问。
还是我同步知识没有理解透呀,大家给指点一下哈!!!谢谢

暴风截图201310248126435.jpg (63.96 KB, 下载次数: 8)

暴风截图201310248126435.jpg

作者: 匡文    时间: 2013-10-24 00:38
本帖最后由 匡文 于 2013-10-24 00:40 编辑

线程wait()的时候,不仅会释放CPU执行权,还会释放锁,所以后面的线程又可以进去了。记住这一点就好理解啦{:soso_e100:}
作者: 寻丶丶觅    时间: 2013-10-24 00:43
就按视频里的说吧,当t1抢到执行权后,执行完一次,他还握着执行权,返回继续执行,这时候flag = true。执行try语句this.wait()。关键这里,执行完后,t1就已经放弃执行资格,也就是放弃了锁,这时候t2当然可以进来了。这里需要注意的是如果notify();有可能产生死锁。用notifyAll有可能会导致多次打印,所以要用while循环判断。
作者: 乔兵    时间: 2013-10-25 08:19
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




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