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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 茄子 高级黑马   /  2014-6-8 18:45  /  6984 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这毕老师视频中的一个售票的小例子,其中用到了while(true)

下面是我的程序:

class Ticket2 implements Runnable
{
        private int tick=100;
        public void run()
        {
                while(true)………………………………………………………………………………………………………………在这里的while(true)有什么作用??
                                                                                                                                             去除了之后,运行结果只有四行,每一个线程运行一次??为什么
                {
               
                        if(tick>0)
                        {
                       
                                System.out.println(Thread.currentThread()+"^^^^^tick run    "+tick--);                       
                        }
                }
        }
}

public class RunnableTicketDemo {

        public static void main(String[] args) {
                Ticket2 t=new Ticket2();
                Thread d1=new Thread(t);
                Thread d2=new Thread(t);
                Thread d3=new Thread(t);
                Thread d4=new Thread(t);
                d1.start();
                d2.start();
                d3.start();
                d4.start();
        }

}

求教大神啊

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

8 个回复

倒序浏览
run方法中的代码就是线程要运行的代码,用while(true)是为了让run方法中的代码不断重复的运行,也就是让线程不停的运行,便于查看效果,如果去掉,run运行结束,线程也就结束了。自然只打印四行

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
while语句就是判断对就运行,他直接给个true那就是一直循环运行呗
回复 使用道具 举报
西门吹风 发表于 2014-6-8 19:03
run方法中的代码就是线程要运行的代码,用while(true)是为了让run方法中的代码不断重复的运行,也就是让线 ...

好像有点明白了,这里的while也是一个循环,只不过是判断条件被强行指定为true,这样的话,就是一个循环体而已,而且程序的循环不会结束,(我说呢,今天下午的电脑这么卡,我都重启好几遍了,原来是程序一直在运行而已,只是没有输出啊!!我了个去!!坑)
回复 使用道具 举报
茄子又在搞笑了{:2_32:}
回复 使用道具 举报
我也不知道哎.............
回复 使用道具 举报

没有,真的,今天下午电脑太卡,尤其是Eclipse。卡的要死,我都关闭开启了好多次了!!!!这坑爹的程序!!!
回复 使用道具 举报
加个同步锁吧,否则线程会出问题
回复 使用道具 举报
四顾行者 发表于 2014-6-8 23:22
加个同步锁吧,否则线程会出问题

一看大哥说话,就知道是过来人啊!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马