一个关于多线程的安全问题.一个多窗口同时买票的程序.为什么用同步代码块解决多线程安全问题的时候,在创建Object对象的两个位置输出结果不一样呢?放在位置1能解决安全性问题,而在位置2创建Object对象不能解决安全性问题呢?代码如下,求各位大神指点迷津!谢谢~~~ 
class Ticket implements Runnable 
{ 
        private static int tick=100; 
        Object obj=new Object();//创建Object对象位置1 
        public void run() 
        { 
                while(true) 
                { 
                        //Object obj=new Object();创建Object对象位置2 
                        synchronized(obj) 
                        { 
                                if (tick>0) 
                                { 
                                        try 
                                        { 
                                                Thread.sleep(10); 
                                                System.out.println(Thread.currentThread().getName()+"...sale.."+tick--); 
                                        } 
                                        catch (Exception e) 
                                        { 
                                                System.out.println("错误了!!"); 
                                        } 
                                        System.out.println(Thread.currentThread().getName()+"...sale.."+tick--); 
                                } 
                        } 
                } 
        } 
} 
class TicketDemo2 
{ 
        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(); 
        } 
} |   
        
 
    
    
    
     
 
 |