黑马程序员技术交流社区
标题:
while if 区别
[打印本页]
作者:
陈雪平
时间:
2012-12-28 15:57
标题:
while if 区别
本帖最后由 陈雪平 于 2012-12-28 21:08 编辑
毕老师12天视频,生产者和消费者例子中:
public synchronized void set(String name)
{
while(flag)//
//此处用if和while的区别
try{this.wait();}catch(Exception e){}//t1(放弃资格) t2(获取资格)
this.name = name+"--"+count++;
System.out.println(Thread.currentThread().getName()+"...生产者.."+this.name);
flag = true;
this.notifyAll();
}
作者:
李海鹏
时间:
2012-12-28 16:36
你想啊!用if只能判断一次,用while是循环判断的,
作者:
王少雷
时间:
2012-12-28 17:33
是啊 不管 flag 在哪被 赋过值
一次性判断 和 循环判断,怎么能一样啊。
作者:
Rancho_Gump
时间:
2012-12-28 18:23
如果是if就判断一次,t1或t2被唤醒后,不再进行判断,而直接执行下面的语句,这样就造成了生产两次的情况。如果改上while ,t1,t2在被唤醒后,都会再次进入循环,对flag进行判断,如果为false,跳出循环,执行下面语句。
作者:
刘丰伟
时间:
2012-12-28 20:10
if只是进行一次判断,while是循环,也就是只要满足括号内的条件,会一直循环执行,希望楼主把java基础在巩固下,这错误太低级了啊!
作者:
陈雪平
时间:
2012-12-28 20:50
恩恩,懂了,当时听的糊糊涂涂的,有点迷糊了,谢谢了
作者:
jagon
时间:
2014-3-12 12:10
if是条件判断,while是循环判断,而且if在判断时如果出现线程的暂时切换,可能会出错,但是while每次判断都会去判断初始条件,所以不会出错(最后一点还是要好好理解的)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2