黑马程序员技术交流社区

标题: 线程同步代码块的while(true)怎样退出循环 [打印本页]

作者: liqi    时间: 2014-8-18 20:27
标题: 线程同步代码块的while(true)怎样退出循环
public void  run(){
while(true){
            if(ticket>0){
                           try{Thread.sleep(100)} catch{}
                            System.out.println(Thread.currentThread().getName()+"...sale"+tick--;
                       }
               }
}
如果是重新定义了循环体if(),那么判断退出时if()语句,那么while岂不是多余了
作者: 烟海    时间: 2014-8-18 22:20
用异常。。抛出去。。。
在catch里面break
作者: liqi    时间: 2014-8-18 22:40
554892700 发表于 2014-8-18 22:20
没听懂。while无限循环。if在while里面,就算if完了,while还没完。

就在考虑这个问题,如果要退出循环,得有break
现在就是个死循环
作者: liqi    时间: 2014-8-18 22:41
烟海 发表于 2014-8-18 22:20
用异常。。抛出去。。。
在catch里面break

你的意思是有异常了,退出循环,那么没有异常,不需要退出?
作者: 烟海    时间: 2014-8-18 22:43
liqi 发表于 2014-8-18 22:41
你的意思是有异常了,退出循环,那么没有异常,不需要退出?

如果是重新定义了循环体if(),那么判断退出时if()语句,那么while岂不是多余了

这题的情况不太一样。。。
if只能判断一次,判断完,就结束了。。。不会循环的。。。
作者: liqi    时间: 2014-8-18 23:03
烟海 发表于 2014-8-18 22:43
如果是重新定义了循环体if(),那么判断退出时if()语句,那么while岂不是多余了

这题的情况不太一样。。。 ...

恩,判断语句,失误了
作者: masai158    时间: 2014-8-19 00:05
定义一个标记。 这个标记 默认 为你 while 循环的标记。。。
然后在定义一个方法。供外部调用这个方法。来改变标记
作者: huangxuanheng    时间: 2014-8-19 04:47
条件里面添加break|return语句就OK了
作者: 张涛的狂怒    时间: 2014-8-19 08:55
嗯,无限循环,还记得这是专门写的
作者: icris    时间: 2014-8-19 12:34
如果只写这么多,那跟 while (ticket > 0) { }  功能是一样的,并且这个可以自己停。
但是要是往后看下去,这个是剧情需要,还没讲到怎么停止线程呢,之前的线程必须不能停…
作者: inception    时间: 2014-8-19 12:42
看看。。。。。。。。。。。




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