建立執行緒有三種方式
1.繼承thread
2.實現runnable介面
3.實現callable介面
一.繼承thread,重寫run方法,用start啟動,(呼叫start()方法與run()方法的區別:呼叫run不會起新的執行緒,呼叫start會啟用新的執行緒)
/**
* 執行緒任務類
* 建立執行緒的三種方法一
* 繼承thread類,重寫run方法,用start啟動
*/public class testthreadone extends thread
}public static void main(string args)
}
二.實現runnable介面,重寫run方法,用start方法啟動
/**
* 執行緒任務類
* 建立執行緒三種方法二
* 實現runnable介面來建立執行緒
* 1.實現runnable介面,並重寫run方法
* 2.建立乙個任務類的物件
* 4.用start起訂執行緒
* 注:
* 變數隔離
* 鎖
* */
public class testthreadtwo implements runnable
@override
public void run()
}}
三.實現callbale介面重寫call方法,且利用futuretask
/**
* 執行緒任務類
* 建立執行緒三種方法三
* 1.建立乙個任務類,實現callable介面,並實現call()方法,call()方法中的內容就是需要執行緒完成任務,且有返回值
* 2,建立乙個任務類的物件,並使用futuretask類來包裝任務類的物件,該futuretask物件封裝了任務類物件中call()方法的返回值
* 4,呼叫thread執行緒類物件的start()方法,來起訂乙個執行緒。
* 5,呼叫futuretask類物件的get()方法來獲取執行緒執行的返回值,即人物類物件call()方法的返回值
*/public class testthreadthree implements callable
return i;
}public static void main(string args) catch (exception e)
}}
三種方法比較:
1.繼承thread類的方法:
優點:編寫容易,任務類中訪問當前執行緒可以使用this關鍵字
缺點:任務類即執行緒類已經繼承了thread類,所以不能再繼承其他父類
2.實現runnable介面的方式:
優點:任務類只實現了runnable介面,還可以繼承其他類,可以多個執行緒物件共享乙個任務類物件,即多執行緒共享乙份資源的情況下
缺點:編寫稍微複雜,任務類中訪問當前執行緒,必須使用thread.currentthread()方法
3.實現callable和future的方式
優點:任務類只是實現了callable介面,還可以繼承其他類,同樣多執行緒下可以共享乙份資源,這種方式還有返回值,並且可以丟擲返回值的異常
缺點:編寫複雜,任務類中訪問當前執行緒時,必須使用thread.currentthread()方法
總結:僅僅只重寫run()方法,而不是重寫thread類其他方法的前提下,比較推薦實現runnable介面的方式建立執行緒
因為不僅修改或者增強類的能力,不應該為其建立子類,而且實現runnable介面的方式,執行緒和資源相對分離,程式更加健壯,更符合物件導向的變成思想,當然,需要執行緒有返回值時可以使用callable的方式,但callable的方式有乙個問題,當呼叫get()方法時,如果執行緒還未執行完畢則會阻塞到執行緒執行完畢拿到返回值
關於多執行緒的建立
import com.sun.deploy.ref.helpers public class duoxianceng static class helper implements runnable private void dosomething string message override pu...
多執行緒講解及建立
經過總結,python建立多執行緒主要有如下兩種方法 接下來,我們就來揭開多執行緒的神秘面紗。在python3中,python提供了乙個內建模組threading.thread,可以很方便地讓我們建立多執行緒。threading.thread 一般接收兩個引數 import time from th...
Spring Boot 建立及使用多執行緒
4.基於 async返回值的呼叫 refspring是通過任務執行器 taskexecutor 來實現多執行緒和併發程式設計,使用threadpooltaskexecutor來建立乙個基於線城池的taskexecutor。在使用執行緒池的大多數情況下都是非同步非阻塞的。我們配置註解 enableas...