【java】賣票系統
阿新 • • 發佈:2019-01-04
第二種正確的程式碼,可以進一步理解synchronized限定符:
package thread_1; class SaleTickets implements Runnable{ private static int num = 100; static String str = new String("hello"); public void run(){ while (true) { synchronized(str)//鎖定的要是同一個物件,因此要對String進行限定 { if (num>0){ System.out.printf("%s執行緒正在賣第%d張票\n",Thread.currentThread().getName(),num--); } else break; } } } } public class testTickets { public static void main(String[] args){ SaleTickets aa1 = new SaleTickets(); Thread t1 = new Thread(aa1); t1.start(); t1.setPriority(1); SaleTickets aa2 = new SaleTickets(); Thread t2 = new Thread(aa2);//為什麼可以同時呼叫兩個相同的aa1物件,這是Thread()類已經實現好的。可以直接這樣的使用 //而且這樣更符合邏輯的認知。 t2.start(); } }