標籤:多次 end pre cep run @param vat ... 靜態
/** * 需求:鐵路售票,一共100張,通過四個視窗賣完. */ public static void main(String[] args) { new Ticket().start(); new Ticket().start(); new Ticket().start(); new Ticket().start(); }}class Ticket extends Thread { private static int ticket = 100; //private static Object obj = new Object(); //如果用引用資料類型成員變數當作鎖對象,必須是靜態 public void run() { while(true) { synchronized(Ticket.class) { if(ticket <= 0) { break; } try { Thread.sleep(10); //線程1睡,線程2睡,線程3睡,線程4睡 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName() + "...這是第" + ticket-- + "號票"); } } }
/** * @param args * 火車站賣票的例子用實現Runnable介面 */ public static void main(String[] args) { MyTicket mt = new MyTicket(); new Thread(mt).start(); new Thread(mt).start(); new Thread(mt).start(); new Thread(mt).start(); /*Thread t1 = new Thread(mt); //多次啟動一個線程是非法的 t1.start(); t1.start(); t1.start(); t1.start();*/ }}class MyTicket implements Runnable { private int tickets = 100; @Override public void run() { while(true) { synchronized(this) { if(tickets <= 0) { break; } try { Thread.sleep(10); //線程1睡,線程2睡,線程3睡,線程4睡 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...這是第" + tickets-- + "號票"); } } }
多線程- 鐵路售票學習