黑马程序员技术交流社区

标题: 多线程 售票例子 [打印本页]

作者: 宋蓬勃    时间: 2013-2-24 16:19
标题: 多线程 售票例子
本帖最后由 宋蓬勃 于 2013-2-24 16:23 编辑

代码运行结束不了,跟毕老师视频里代码一样啊


class Ticket extends Thread
{
        private static int tick = 100;
        public void run()
        {
                while(true)
                {
                        if(tick>0)
                        {
                                System.out.println(Thread.currentThread().getName()+"sale : "+tick--);
                        }
                }
        }
}


class  TicketDemo
{
        public static void main(String[] args)
        {
                Ticket t1 = new Ticket();
                Ticket t2 = new Ticket();
                Ticket t3 = new Ticket();
                Ticket t4 = new Ticket();

                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }
}

作者: 罗海云    时间: 2013-2-24 16:29
class Ticket extends Thread
{
        private static int tick = 100;
        public void run()
        {
                while(true)这儿设置的死循环. 当然结束不了了...按Ctrl+c结束吧
                {
                        if(tick>0)
                        {
                                System.out.println(Thread.currentThread().getName()+"sale : "+tick--);
                        }
                }
        }
}

作者: 邢义敏    时间: 2013-2-24 16:34
这个代码是需要同步来进行优化和修改的,所以现在这个还不能自己结束,要按Ctrl+c来强制性结束程序,
作者: 宋蓬勃    时间: 2013-2-24 16:40
罗海云 发表于 2013-2-24 16:29
class Ticket extends Thread
{
        private static int tick = 100;

多谢,感觉我很弱啊
作者: 偏執旳、靑春    时间: 2013-2-24 16:43
class Ticket extends Thread
{
         private static int tick = 100;
         public void run()
         {
                 while(true)
                 {
                         if(tick>0)
                         {
                                 System.out.println(Thread.currentThread().getName()+"sale : "+tick--);
                         }
                 }
         }
}


class  TicketDemo
{
         public static void main(String[] args)
        {
                 Ticket t1 = new Ticket();
                 Ticket t2 = new Ticket();
                 Ticket t3 = new Ticket();
                 Ticket t4 = new Ticket();

                t1.start();
                 t2.start();
                 t3.start();
                 t4.start();
         }
}

里面存在一个无限循环,我想楼主肯定以为100减完了 ,程序就会结束吧,其实不能,因为虽然减完了,但是程序并没有停掉,while(true)还在那里空转,只能Ctrl+c。




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