在Java中,多線程主要的實現方式有四種:1、繼承Thread類;2、實現Runnable接口;3、實現Callable接口通過FutureTask包裝器來創建Thread線程;4、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完后都沒有返回值,而后兩種是帶返回值的。
java實現多線程的幾種方式
1、繼承Thread類創建線程
Thread類本質上也是實現了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()實例方法。
start()方法是一個native方法,它將啟動一個新線程,并執行run()方法。這種方式實現多線程比較簡單,通過繼承Thread類并復寫run()方法,就可以啟動新線程并執行自己定義的run()方法。
2、實現Runnable接口創建線程
由于Java是單繼承機制,如果自己的類已經繼承自另一個類,則無法再直接繼承Thread類,此時,可以通過實現Runnable接口來實現多線程。
實現Runnable接口并實現其中的run方法,然后通過構造Thread實例,傳入Runnable實現類,然后調用Thread的start方法即可開啟一個新線程。
3、實現Callable接口通過FutureTask包裝器來創建Thread線程
首先需要一個實現Callable接口的實例,然后實現該接口的唯一方法call邏輯,接著把Callable實例包裝成FutureTask傳遞給Thread實例啟動新線程。
FutureTask本質上也實現了Runnable接口,所以同樣可以用來構造Thread實例。
4、使用ExecutorService、Callable、Future實現有返回結果的線程(線程池方式)
ExecutorService、Callable、Future三個接口都是屬于Executor框架??煞祷刂档娜蝿毡仨殞崿FCallable接口。通過ExecutorService執行Callable任務后,可以獲取到一個Future的對象,在該對象上調用get()就可以獲取到Callable任務返回的結果了。
[免責聲明]
文章標題: java實現多線程的幾種方式
文章內容為網站編輯整理發布,僅供學習與參考,不代表本網站贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時溝通。發送郵件至36dianping@36kr.com,我們會在3個工作日內處理。