1. 程式人生 > >匿名內部類實現執行緒的建立

匿名內部類實現執行緒的建立

public class Main {
	public static void main(String[] args) {
		for(int i=0;i<4;i++){
			new Thread(new Runnable(){
				@Override
				public void run(){
					for(int j=0;j<100;j++){
						Ticket.fun();
					}
				}
			},"視窗"+(i+1)).start();
		}
	}
}

public class Ticket {
	static int a = 0;	
	public synchronized static void fun(){
		Ticket.a++;
		System.out.println(Thread.currentThread().getName()+"正在賣第"+Ticket.a+"號票");
	}
}
上面的程式碼實現了多個執行緒同時賣票,由於a和fun()都是共享資源,所以加上了鎖,那個執行緒要進入必須看一下這個執行緒的鎖有沒有被釋放,否則無法進入。上面的new Runnable(){}並不是例項化了Runnable介面,而是例項化了一個實現Runnable介面的匿名內部類,由於是匿名,所以你不知道這個類的名字是什麼,如果我們再寫一個類實現Runnable介面,那麼我們便可以用這個實現了Runnable介面的類代替這裡的new Runnable(){},當然這個實現Runnable介面的有名字的類可以自己寫run()中的程式碼,若有名字的實現Runnable的類和匿名內部類都寫如run()內容,那麼匿名內部類將覆蓋有名字的類。