package wei;
public class ss {
public static void main(String[] args) {
ThreadSellTciket sTicket=new ThreadSellTciket(); //創建屬於類ThreadSellTciket的對象sTicket
new Thread(sTicket).start(); //創建3個同優先級的線程
new Thread(sTicket).start();
new Thread(sTicket).start();
}
}
class ThreadSellTciket implements Runnable{ //創建類ThreadSellTciket,實現接口Runnable
private int tickets=10;
boolean flag=true;
public void run(){ //重寫方法run(),在方法run()中調用方法sale()
while(flag){
sale();
}
}
synchronized public void sale(){ //創建同步方法sale()
if(tickets>0){ //各個售票線程對10張車票共同進行售票
try{
Thread.sleep(100);
}
catch(Exception e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"正在賣票:"+tickets);
tickets--;
}
else{
flag=false; //如果車票售完,則將標識符flag的值設置爲false,此時方法run()的循環條件不滿足,從而結束方法run(),即結束線程
}
}
}
知識點:資源衝突;
對象鎖;
線程間的同步控制;
線程組;
當多個線程衝突時,如果不加以控制,很可能會導致線程之間發生衝突;
當多個線程訪問同一個對象時,往往會造成一定的衝突。