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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liqi 中级黑马   /  2014-8-18 20:27  /  1916 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public void  run(){
while(true){
            if(ticket>0){
                           try{Thread.sleep(100)} catch{}
                            System.out.println(Thread.currentThread().getName()+"...sale"+tick--;
                       }
               }
}
如果是重新定义了循环体if(),那么判断退出时if()语句,那么while岂不是多余了

点评

看老师写的代码,还以为不是死循环,其实觉得此处还是用for()循环比较好  发表于 2014-8-18 23:05
知道了,这个循环是无限循环,在运行时每次都得手动停止运行  发表于 2014-8-18 23:04

12 个回复

倒序浏览
用异常。。抛出去。。。
在catch里面break
回复 使用道具 举报
554892700 发表于 2014-8-18 22:20
没听懂。while无限循环。if在while里面,就算if完了,while还没完。

就在考虑这个问题,如果要退出循环,得有break
现在就是个死循环
回复 使用道具 举报
烟海 发表于 2014-8-18 22:20
用异常。。抛出去。。。
在catch里面break

你的意思是有异常了,退出循环,那么没有异常,不需要退出?
回复 使用道具 举报
liqi 发表于 2014-8-18 22:41
你的意思是有异常了,退出循环,那么没有异常,不需要退出?

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

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

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

恩,判断语句,失误了
回复 使用道具 举报
定义一个标记。 这个标记 默认 为你 while 循环的标记。。。
然后在定义一个方法。供外部调用这个方法。来改变标记
回复 使用道具 举报
huangxuanheng 来自手机 中级黑马 2014-8-19 04:47:22
8#
条件里面添加break|return语句就OK了
回复 使用道具 举报
嗯,无限循环,还记得这是专门写的
回复 使用道具 举报
icris 中级黑马 2014-8-19 12:34:10
10#
如果只写这么多,那跟 while (ticket > 0) { }  功能是一样的,并且这个可以自己停。
但是要是往后看下去,这个是剧情需要,还没讲到怎么停止线程呢,之前的线程必须不能停…
回复 使用道具 举报
看看。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马