Java中線程的匿名內部類使用

    對於線程匿名內部類的使用在於開發中小微型程序非常廣泛,特別是在多層處理方面,使用匿名內部類非常方便。

    匿名類最大的特點就是匿名了。。(感覺是廢話)既然是匿名類,所以你無法在別的地方使用這個類(實例化,調用它的靜態方法之類的)
    特點的話,除了只能使用一次,其實還有其他用處(在看spring-boot源碼時發現的)
    當你想使用一個類的protected 方法時,但是又不和這個類在同一個包下,你是沒辦法調用的。這時候匿名類就派上用場了,你可以聲明一個匿名類繼承該類,並定義一個方法,在這個方法內使用super調用你想調用的那個方法(其實你也可以寫個類繼承這個類,就能調用父類的protected方法了,但是匿名類更簡潔,因爲你只想調用這個方法而已)

    使用線程的內匿名內部類方式,可以方便的實現每個線程執行不同的線程任務操作

方式1:創建線程對象時,直接重寫Thread類中的run方法

方式2:使用匿名內部類的方式實現Runnable接口,重新Runnable接口中的run方法

方式3:使用匿名內部類的方式實現Runnable接口與線程對象結合,並重新Runnable接口中的run方法

    使用前提:繼承或是接口實現 所以new(父類/接口)的對象並不是子類對象而是父類或者接口;並且在方法內部重寫掉抽象方法。 


***方式1:繼承方式  XXX extends Thread { public void run(){}}由於匿名內部類並無子類,直接new(Thread)

		//繼承方式  XXX extends Thread{ public void run(){}}
		new Thread(){
			public void run(){
				System.out.println("!!!");
			}
		}.start();

——匿名內部類就是自己的子類對象,所以直接調用.start()方法,實現線程程序。

***方式2:實現接口方式 XXX implements Runnable{ public void run(){}}

		//實現接口方式  XXX implements Runnable{ public void run(){}}
		Runnable r = new Runnable(){
			public void run(){
				System.out.println("###");
			}
		};
		new Thread(r).start();

——本方法可以不定義子類直接new(接口),在接口內部重寫抽象方法,接口引用(指向)"r"創建實現類的對象,傳遞"r"到new(thread)並調用方法.start()也可以實現匿名匿名內部類的線程程序。

***方式3:

		//使用繼承方式和接口實現方式
		new Thread(new Runnable(){
			public void run(){
				System.out.println("@@@");
			}
		}).start();

——相對於前兩種方法,這種方法可以復性使用線程,並且在子類中可以進行重定向。程序運行快但是安全性不足。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章