1. 程式人生 > >實現java多執行緒的3種方式,99%人沒用過第3種

實現java多執行緒的3種方式,99%人沒用過第3種



實現多執行緒的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