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