java多線程實(shí)現(xiàn)方式主要有三種:繼承Thread類、實(shí)現(xiàn)Runable接口、使用ExecutorService、CallBack、Future實(shí)現(xiàn)有返回結(jié)果的多線程。其中前兩種現(xiàn)成執(zhí)行完是沒有返回值的,第三種才有返回值。下面詳細(xì)看看三種實(shí)現(xiàn)方式:
1.繼承Thread類實(shí)現(xiàn)多線程:
其實(shí),繼承Thread類的方法實(shí)現(xiàn)多線程,但其本質(zhì)也是實(shí)現(xiàn)了Runable接口的一個(gè)實(shí)例。啟動(dòng)Thread線程的唯一方法就是通過Thread類的Start()方法。start()方法是一個(gè)Native方法,將啟動(dòng)一個(gè)新線程,并執(zhí)行Run()方法.
這種方法很簡(jiǎn)單,通過自己的累繼承Thread類,然后重寫Run()方法,就可以啟動(dòng)新線程并執(zhí)行自己定義的Run()方法。如下:
2.實(shí)現(xiàn)Runable接口方式實(shí)現(xiàn)多線程
如果自己的類已經(jīng)extends(繼承)另一個(gè)類,就無(wú)法直接extends類Thread,此時(shí),就要靠實(shí)現(xiàn)一個(gè)Runnable接口來實(shí)現(xiàn)多線程了,如下:
為了啟動(dòng)MyThread,需要首先實(shí)例化一個(gè)Thread,并傳入自己的MyThread實(shí)例:
然而事實(shí)上,當(dāng)傳入了一個(gè)Runabletarget參數(shù)給Thread后,Thread的run()方法就會(huì)調(diào)用target.run().
3.使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程
ExecutorService、Callable、Future這個(gè)對(duì)象實(shí)際上都是屬于Executor框架中的功能類。
基本思想為:可返回值的任務(wù)必須實(shí)現(xiàn)Callable接口,類似的,無(wú)返回值的任務(wù)必須Runnable接口。執(zhí)行Callable任務(wù)后,可以獲取一個(gè)Future的對(duì)象,在該對(duì)象上調(diào)用get就可以獲取到Callable任務(wù)返回的Object了,再結(jié)合線程池接口ExecutorService就可以實(shí)現(xiàn)傳說中有返回結(jié)果的多線程了。
由于該代碼實(shí)例代碼內(nèi)容較長(zhǎng),理解起來比較復(fù)雜,如果你需要源碼進(jìn)行學(xué)習(xí),請(qǐng)聯(lián)系小編,基于jdk1.5或者1.5以上的版本。
以上就是北大青鳥長(zhǎng)沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):Java多線程爬蟲”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
Java基礎(chǔ)學(xué)習(xí)