實現java多執行緒的3種方式,99%人沒用過第3種
阿新 • • 發佈:2018-11-12
實現多執行緒的3種方式
1、繼承Thread類
看jdk原始碼可以發現,Thread類其實是實現了Runnable介面的一個例項,繼承Thread類後需要重寫run方法並通過start方法啟動執行緒。
繼承Thread類耦合性太強了,因為java只能單繼承,所以不利於擴充套件。
2、實現Runnable介面
通過實現Runnable介面並重寫run方法,並把Runnable例項傳給Thread物件,Thread的start方法呼叫run方法再通過呼叫Runnable例項的run方法啟動執行緒。
所以如果一個類繼承了另外一個父類,此時要實現多執行緒就不能通過繼承Thread的類實現。
3、實現Callable介面
通過實現Callable介面並重寫call方法,並把Callable例項傳給FutureTask物件,再把FutureTask物件傳給Thread物件。它與Thread、Runnable最大的不同是Callable能返回一個非同步處理的結果Future物件並能丟擲異常,而其他兩種不能。
示例程式碼
結果輸出:
Thread1 running...
Thread2 running...
Thread3 running...
name:java,age:22