【面試題】 模擬多執行緒售票系統
阿新 • • 發佈:2018-12-27
public class Tiket{ private int tiketNumber; public int getTiketNumber() { return tiketNumber; } public void setTiketNumber(int tiketNumber) { this.tiketNumber = tiketNumber; } public Tiket(int tiketNumber) { this.tiketNumber = tiketNumber; } public static void main (String[] args){ Tiket tiket =new Tiket(100); for (int i = 0; i < 5; i++) { TicketWindow tw = new TicketWindow(tiket); tw.setName("售票視窗"+i); tw.start(); } } } class TicketWindow extends Thread{ public Tiket tiket; public TicketWindow(Tiket tiket) { this.tiket = tiket; } @Override public void run() { while (true){ if(tiket.getTiketNumber()>0){ System.out.println(Thread.currentThread().getName()+"正在準備出票,剩餘票數為:"+tiket.getTiketNumber()); tiket.setTiketNumber(tiket.getTiketNumber()-1); System.out.println(Thread.currentThread().getName()+"賣出一張票,剩餘票數為:"+tiket.getTiketNumber()); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } }else{ System.out.println(Thread.currentThread().getName()+"餘票不足!請領選時段或電影!"); break; } } } }