標籤:java筆記 main static java style blog 靜態 int over
1 public class SellTicketDemo { 2 public static void main(String[] args) { 3 // 建立三個線程對象 4 SellTicket st1 = new SellTicket(); 5 SellTicket st2 = new SellTicket(); 6 SellTicket st3 = new SellTicket(); 7 8 // 給線程對象起名字 9 st1.setName("視窗1");10 st2.setName("視窗2");11 st3.setName("視窗3");12 13 // 啟動線程14 st1.start();15 st2.start();16 st3.start();17 }18 }19 public class SellTicket extends Thread {20 21 // 定義100張票22 // private int tickets = 100;23 // 為了讓多個線程對象共用這100張票,我們其實應該用靜態修飾24 private static int tickets = 100;25 26 @Override27 public void run() {28 // 定義100張票29 // 每個線程進來都會走這裡,這樣的話,每個線程對象相當於買的是自己的那100張票,這不合理,所以應該定義到外面30 // int tickets = 100;31 32 // 是為了類比一直有票33 while (true) {34 if (tickets > 0) {35 System.out.println(getName() + "正在出售第" + (tickets--) + "張票");36 }37 }38 }39 }
1 public class SellTicketDemo { 2 public static void main(String[] args) { 3 // 建立資來源物件 4 SellTicket st = new SellTicket(); 5 6 // 建立三個線程對象 7 Thread t1 = new Thread(st, "視窗1"); 8 Thread t2 = new Thread(st, "視窗2"); 9 Thread t3 = new Thread(st, "視窗3");10 11 // 啟動線程12 t1.start();13 t2.start();14 t3.start();15 }16 }17 public class SellTicket implements Runnable {18 // 定義100張票19 private int tickets = 100;20 21 @Override22 public void run() {23 while (true) {24 if (tickets > 0) {25 System.out.println(Thread.currentThread().getName() + "正在出售第"26 + (tickets--) + "張票");27 }28 }29 }30 }
這樣的兩種方式運行結果都會有問題 負數的票。。。。->>>>
java筆記線程兩種方式類比電影院賣票