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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 横溢天使   /  2015-9-26 13:10  /  6497 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

LLLLL 中级黑马 2015-10-10 18:42:03
21#
。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
1、Input和Output里边的flag是一个吗?
答:是的,确实是同一个flag,因为两个线程都是操作同一个资源。

2、if(r.flag)是什么意思?
答:判断r.flag是不是true,是的话就可以进去if代码块里执行。

3、是不是代表flag是true?
答:代表的是是否输入了资源以及是否输出了资源,如果是false的话,说明还没有输入,所以wait,让output线程来输出,等到输出了,就让flag=true,并且output线程wait,把input唤醒(notify)来判断flag是不是true来进行输入资源。

4、可是我感觉默认的flag值是false啊!真心搞不懂,还请那位大神详细指点指点,我感激不尽
答:flag在同步代码块的最下面是变化的,不断在切换false和true。
回复 使用道具 举报
都是大神,我听明白了,但是我是水贴的
回复 使用道具 举报
1.你的代码没编对,我复制粘贴了,运行不了。主要是你在Res这个类中没有对flag进行初始化。你把class中的flag=true,程序就可以运行了。2.你的代码的编写格式有问题,为了对齐请按tab键,不要打空格键,这样很不美观。下次注意。if(r.flag)是判断if中的值是真是假,是真就执行,假的化就跳过if语句执行。主要是你没有给flag进行初始化,不懂情有可原。最后祝你迎难而上,取得成功!
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马