黑马程序员技术交流社区

标题: 多线程卖票 [打印本页]

作者: ilvsoft    时间: 2014-4-25 12:43
标题: 多线程卖票
在run中的while里我已经判断了如果i<=0就跳出循环了,为什么我运行后 输出到0后,过一会儿又会随机的输出,比如从50开始输出,50,49,48 ...这样,什么原因



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

}
class Ticket implements Runnable
{
        private int i=100;
        Object obj=new Object();
        public void run()
        {
                while(true)
                {
                        synchronized (obj)
                        {
                                if(i>0)
                                {
                                        try{Thread.sleep(10);}
                                        catch(Exception e){}
                                        System.out.println(Thread.currentThread().getName()+"sale........."+i--);
                                }

                               
                        }

                        if(i<=0)
                                break;
                }
               
        }
}


作者: 小周务商    时间: 2014-4-25 12:50
你应该j是通过改变while的循环条件来结束循环。。而不是判断i。
作者: kuroro自走核炮    时间: 2014-4-25 12:54
这个代码我试了下,打印到1之后就程序自动退出了……不会继续打印啊……
作者: ilvsoft    时间: 2014-4-25 13:02
小周务商 发表于 2014-4-25 12:50
你应该j是通过改变while的循环条件来结束循环。。而不是判断i。

我明白你的意思,但是我也可以通过break,直接跳出循环啊
作者: ilvsoft    时间: 2014-4-25 13:03
kuroro自走核炮 发表于 2014-4-25 12:54
这个代码我试了下,打印到1之后就程序自动退出了……不会继续打印啊……

不会吧,我用的eclipse  运行后过一会儿他又随机从一个数 慢慢输出
作者: ilvsoft    时间: 2014-4-25 13:14
没大神解答吗
作者: ilvsoft    时间: 2014-4-25 13:15
结贴,程序没问题是我看错了
作者: 2528870651    时间: 2014-4-25 13:37
技术分挣得好快啊。这么快就26了。
作者: ilvsoft    时间: 2014-4-25 13:44
2528870651 发表于 2014-4-25 13:37
技术分挣得好快啊。这么快就26了。

我都一周没来了




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