1. 程式人生 > >【java】賣票系統

【java】賣票系統

第二種正確的程式碼,可以進一步理解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();
		
	}
}