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