java多线程实例(2)

public class ThreadDemo05 {
    public static void main(String args[])
    {
        // 四个售票点应该控制同一个资源
        Demo d = new Demo() ;

        Thread t1 = new Thread(d) ;
        Thread t2 = new Thread(d) ;
        Thread t3 = new Thread(d) ;
        Thread t4 = new Thread(d) ;
        
        t1.start() ;
        t2.start() ;
        t3.start() ;
        t4.start() ;

    }

}

class Demo implements Runnable
{
    private int ticket = 50 ;
    Object obj = new Object();//申请一个对象

    public void run()
    {
        while(this.ticket>0)
        {
            synchronized(obj)
            {
                if(this.ticket > 0)
                {
                    exe(Thread.currentThread().getName());
                }    
            }
        }
    }
    
    public void exe(String name){
        try {
            Thread.sleep(40);
            System.out.println( name + " sail --" + ticket--);
            System.out.println( name);
            System.out.println( name);
        } catch (Exception e) {
            System.out.println("异常");
        }
    }
};
相关文章
相关标签/搜索