黑马程序员技术交流社区

标题: 练习题求解,帮我找找这个练习题的问题. [打印本页]

作者: pigdanny    时间: 2016-7-12 21:10
标题: 练习题求解,帮我找找这个练习题的问题.
这道多线程的练习题,我明明加了同步锁,可还是出现负数的结果,实在想不通.求指教

package com.itheima5;

/*
* .定义一个类实现Runnable接口,卖票100张,四个线程,输出格式为“窗口1,还剩10张票”,指定窗口3卖第10张票
* */
public class SellTicket implements Runnable
{
        int ticket=100;

        @Override
        public void run()
        {
                while(ticket>0)
                {
                        synchronized(this)
                        {
                                try
                                {
                                        Thread.sleep(50);
                                } catch (InterruptedException e)
                                {
                                        e.printStackTrace();
                                }
                                System.out.println(Thread.currentThread().getName()+
                                                        ",还剩"+(--ticket)+"张票");
                        }
                }
        }
}

package com.itheima5;

public class SellTicketDemo
{

        public static void main(String[] args)
        {
                SellTicket st=new SellTicket();
                Thread t1=new Thread(st,"窗口1");
                Thread t2=new Thread(st,"窗口2");
                Thread t3=new Thread(st,"窗口3");
                Thread t4=new Thread(st,"窗口4");
               
                t1.start();
                t2.start();
                t3.start();
                t4.start();
               
        }

}




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