如果一個類繼承Thread,則不適合資源共享。但是如果實現了Runable接口的話,則很容易的實現資源共享
實現Runnable接口比繼承Thread類所具有的優勢:
1. 適合多個相同的程序代碼的線程去共享同一個資源。
2.避免了單繼承的局限性
一個類只能繼承一個類(一個人只能有一個親爹),類繼承了Thread類就不能繼承其他的類
實現了Runnable接口,還可以繼承其他的類,實現其他的接口
DEMO:
實現類,可以復用runnable方法
方法1:

方法2:

測試類:
實現runbale方法

測試runnable2 方法

3. 增加程序的健壯性,實現解耦操作,代碼可以被多個線程共享,代碼和線程獨立。
實現Runnable接口的方式,把設置線程任務和開啟新線程進行了分離(解耦)
實現類中,重寫了run方法:用來設置線程任務
創建Thread類對象,調用start方法:用來開啟新線程
4. 線程池只能放入實現Runable或Callable類線程,不能直接放入繼承Thread的類。
在java中,每次程序運行至少啟動2個線程。一個是main線程,一個是垃圾收集線程。因為每當使用
java命令執行一個類的時候,實際上都會啟動一個JVM,每一個JVM其實在就是在操作系統中啟動了一個進
程。
