說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732
全網(wǎng)監(jiān)測海量數(shù)據(jù)按需發(fā)布監(jiān)測預(yù)警
實時把握輿情動態(tài)精準追溯信息源頭
在學(xué)習(xí)java設(shè)計語言程序的過程當(dāng)中,我們經(jīng)常會接觸到j(luò)ava線程,那么你知道java線程是什么?java多線程如何實現(xiàn)?如果不知道的朋友,那么就與小編一起來好好的學(xué)習(xí)一下吧。
java線程——java線程是什么
線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進程中的多個線程之間可以并發(fā)執(zhí)行。由于線程之間的相互制約,致使線程在運行中呈現(xiàn)出間斷性。線程也有就緒、阻塞和運行三種基本狀態(tài)。
線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
線程和進程的區(qū)別在于,子進程和進程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約CPU時間,發(fā)揮利用,根據(jù)具體情況而定.線程的運行中需要使用計算機的內(nèi)存資源和CPU.
JA多線程實現(xiàn)的三種方式
1、繼承Thread類實現(xiàn)多線程
繼承Thread類的方法盡管被我列為一種多線程實現(xiàn)方式,但Thread本質(zhì)上也是實現(xiàn)了Runnable接口的一個實例,它代表一個線程的實例,并且,啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,并執(zhí)行run()方法。這種方式實現(xiàn)多線程很簡單,通過自己的類直接extendThread,并復(fù)寫run()方法,就可以啟動新線程并執(zhí)行自己定義的run()方法。
2、實現(xiàn)Runnable接口方式實現(xiàn)多線程
如果自己的類已經(jīng)extends另一個類,就無法直接extendsThread,此時,必須實現(xiàn)一個Runnable接口。
3、使用ExecutorService、Callable、Future實現(xiàn)有返回結(jié)果的多線程
ExecutorService、Callable、Future這個對象實際上都是屬于Executor框架中的功能類。想要詳細了解Executor框架的可以訪問java官網(wǎng),這里面對該框架做了很詳細的解釋。返回結(jié)果的線程是在JDK1.5中引入的新特征,確實很實用,有了這種特征我就不需要再為了得到返回值而大費周折了,而且即便實現(xiàn)了也可能漏洞百出。
可返回值的任務(wù)必須實現(xiàn)Callable接口,類似的,無返回值的任務(wù)必須Runnable接口。執(zhí)行Callable任務(wù)后,可以獲取一個Future的對象,在該對象上調(diào)用get就可以獲取到Callable任務(wù)返回的Object了,再結(jié)合線程池接口ExecutorService就可以實現(xiàn)傳說中有返回結(jié)果的多線程了。下面提供了一個完整的有返回結(jié)果的多線程測試例子,在JDK1.5下驗證過沒問題可以直接使用。
以上就是有關(guān)java線程的內(nèi)容介紹,在使用java線程的過程當(dāng)中,不管你選擇的是哪一種實現(xiàn)方式他們都會有它各自的使用注意事項,所以如果你想了解具體的內(nèi)容的話歡迎關(guān)注我們文軍營銷的官網(wǎng)。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732