Lock l = new ReentrantLock(); 
    @Override 
    public void run() { 
        while(true){ 
            l.lock(); 
            if(num == 0){ 
                break; 
            } 
            String name = Thread.currentThread().getName(); 
            System.out.println(name+"卖出了第"+(1000-num + 1)+"张票,还剩"+(--num)+"张"); 
            l.unlock(); 
            if(num == 0){ 
                break; 
            } 
        } 
    } 
} 
if判定在lock内代码上时程序不动但是没有停止,只有在代码下在加一次if判定程序才会停止运行 
 |   
        
 
    
    
    
     
 
 |