火車票購票系統模擬

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(),即結束線程
    }
   }

       }

這裏寫圖片描述

知識點:資源衝突;
       對象鎖;
       線程間的同步控制;
       線程組;


   當多個線程衝突時,如果不加以控制,很可能會導致線程之間發生衝突;

當多個線程訪問同一個對象時,往往會造成一定的衝突。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章