class TicketsSystem 

public static void main(String[] args) 

SellThread st=new SellThread(); 
new Thread(st).start(); 
try 

Thread.sleep(1); 

catch(Exception e) 

e.printStackTrace(); 

st.b=true; 
new Thread(st).start(); 


class SellThread implements Runnable 

int tickets=10; 
Object obj=new Object(); 
boolean b=false; 
public void run() 

if(b==false) 

while(true) 
sell(); 

else 

while(true) 

synchronized(obj) 

try 

Thread.sleep(10); 

catch(Exception e) 

e.printStackTrace(); 

if(tickets>0) 

System.out.println("obj:"+Thread.currentThread().getName()+ 
" sell tickets:"+tickets); 
tickets--; 





public synchronized void sell() 

if(tickets>0) 

try 

Thread.sleep(10); 

catch(Exception e) 

e.printStackTrace(); 

System.out.println("sell():"+Thread.currentThread().getName()+" sell tickets:"+tickets); 
tickets--; 


}
结果sell():Thread-0 sell tickets:10
obj:Thread-1 sell tickets:9
sell():Thread-0 sell tickets:8
obj:Thread-1 sell tickets:7
sell():Thread-0 sell tickets:6
obj:Thread-1 sell tickets:5
sell():Thread-0 sell tickets:4
obj:Thread-1 sell tickets:3
sell():Thread-0 sell tickets:2
obj:Thread-1 sell tickets:1
sell():Thread-0 sell tickets:0而且好像结果打印出来的语句 obj  sell tickets与 
sell():  sell tickets是交替出现的
为什么会打印出(线程名+sell tickets:0)来?
当执行完线程1的时候b=true;可为什么还会继续执行sell():Thread-0 sell tickets:0呢