Java多執行緒實現電影院售票案例
阿新 • • 發佈:2018-10-31
某電影院目前正在上映賀歲大片,共有100張票,而它有3個售票視窗,請設計一個程式模擬該電影院售票。
定義Sell類實現Runnable介面,很好的解決了單繼承共享資源問題
public class Sell implements Runnable { // 定義100張票,三個售票視窗售賣 private int tickets = 100; Object obj = new Object(); @Override //重寫run方法 public void run() { while (true) { synchronized (obj) { // synchronized(物件) 執行緒同步機制,解決了重複搶佔現象 if (tickets > 0) { try { Thread.sleep(100); // sleep();休眠100毫秒 } catch (InterruptedException e) { //丟擲異常 e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "正在出售第: " + (tickets--) + " 張票"); } } } } } public class SellDemo { public static void main(String[] args) { Sell s = new Sell(); //三個售票口 Thread t1 = new Thread(s, "視窗1"); Thread t2 = new Thread(s, "視窗2"); Thread t3 = new Thread(s, "視窗3"); //啟動執行緒 t1.start(); t2.start(); t3.start(); } }