建立執行緒有幾種不同的方式?

2021-07-30 20:48:41 字數 1129 閱讀 6375

①繼承thread類(真正意義上的執行緒類),是runnable介面的實現。

②實現runnable介面,並重寫裡面的run方法。

③使用executor框架建立執行緒池。executor框架是juc裡提供的執行緒池的實現。

呼叫執行緒的start():啟動此執行緒;呼叫相應的run()方法

繼承於thread類的執行緒類,可以直接呼叫start方法啟動執行緒(使用static也可以實現資源共享).乙個執行緒(物件)只能夠執行一次start(),而且不能通過thread實現類物件的run()去啟動乙個執行緒。

實現runnable介面的類需要再次用thread類包裝後才能呼叫start方法。(三個thread物件包裝乙個類物件,就實現了資源共享)。

執行緒的使用的話,注意鎖和同步的使用。(多執行緒訪問共享資源容易出現執行緒安全問題)

一般情況下,常見的是第二種。

* runnable介面有如下好處:

*①避免點繼承的侷限,乙個類可以繼承多個介面。

*②適合於資源的共享

/* * thread的常用方法:

* 1.start():啟動執行緒並執行相應的run()方法

* 2.run():子執行緒要執行的**放入run()方法中

* 3.currentthread():靜態的,調取當前的執行緒

* 4.getname():獲取此執行緒的名字

* 5.setname():設定此執行緒的名字

* 6.yield():呼叫此方法的執行緒釋放當前cpu的執行權(很可能自己再次搶到資源)

* 7.join():在a執行緒中呼叫b執行緒的join()方法,表示:當執行到此方法,a執行緒停止執行,直至b執行緒執行完畢,

* a執行緒再接著join()之後的**執行

* 8.isalive():判斷當前執行緒是否還存活

* 9.sleep(long l):顯式的讓當前執行緒睡眠l毫秒  (只能捕獲異常,因為父類run方法沒有拋異常)

* 10.執行緒通訊(方法在object類中):wait()   notify()  notifyall() *

*設定執行緒的優先順序(非絕對,只是相對機率大些)

* getpriority():返回執行緒優先值

* setpriority(int newpriority):改變執行緒的優先順序 */

建立執行緒有幾種方式

程式中,我們經常需要使用到執行緒來幫我們做事情,那麼建立執行緒有哪些方式呢?1.繼承 thread 類,並且重寫 run 方法。2.實現 runnable 介面,並且重寫 run 方法。3.實現 callable 介面,並且重寫 call 方法。4.使用 executors 類建立執行緒池。第一種方...

建立執行緒有幾種方式

thread 類本質上是實現了 runnable 介面的乙個例項,代表乙個執行緒的例項。啟動線 程的唯一方法就是通過 thread 類的 start 例項方法。start 方法是乙個 native 方 法,它將啟動乙個新執行緒,並執行 run 方法。如果自己的類已經 extends 另乙個類,就無法...

建立執行緒的方式 執行緒建立到底有幾種方式?

在網上搜尋執行緒建立的集中方式,大約都是多的三種或者四種,我們看下jdk的原始碼怎麼說的?原始碼中說的建立執行緒有兩種方式類thread和介面runable 網上第三種 實現callable介面,結合futuretask建立執行緒,這種方式我們檢視原始碼也可以看出它實際上也屬於實現runable介面...