JAVA 多執行緒 兩種方法的比較

2021-07-27 21:47:35 字數 1463 閱讀 9791

一、繼承thread類

(1).首先定義乙個類去繼承thread父類,重寫父類中的run()方法。在run()方法中加入具體的任務**或處理邏輯。

(2).直接建立乙個threaddemo2類的物件,也可以利用多型性,變數宣告為父類的型別。

(3).呼叫start方法,執行緒t啟動,隱含的呼叫run()方法。

二、實現runnable介面

(1).定義乙個類實現runnable介面,重寫介面中的run()方法。在run()方法中加入具體的任務**或處理邏輯。

(2).建立runnable介面實現類的物件。

(3).建立乙個thread類的物件,需要封裝前面runnable介面實現類的物件。(介面可以實現多繼承)

(4).呼叫thread物件的start()方法,啟動執行緒

區別 採用繼承thread類方式:

(1)優點:編寫簡單,如果需要訪問當前執行緒,無需使用thread.currentthread()方法,直接使用this,即可獲得當前執行緒。

(2)缺點:因為執行緒類已經繼承了thread類,所以不能再繼承其他的父類。

採用實現runnable介面方式:

(1)優點:執行緒類只是實現了runable介面,還可以繼承其他的類。在這種方式下,可以多個執行緒共享同乙個目標物件,所以非常適合多個相同執行緒來處理同乙份資源的情況,從而可以將cpu**和資料分開,形成清晰的模型,較好地體現了物件導向的思想。

(2)缺點:程式設計稍微複雜,如果需要訪問當前執行緒,必須使用thread.currentthread()方法。

其他:

使用實現runnable介面方式建立執行緒可以共享同乙個目標物件(treaddemo1 tt=new treaddemo1();),實現了多個相同執行緒處理同乙份資源。

然後再看一段來自jdk的解釋:

runnable介面應該由那些打算通過某一線程執行其實例的類來實現。類必須定義乙個稱為run的無引數方法。

設計該介面的目的是為希望在活動時執行**的物件提供乙個公共協議。例如,thread類實現了runnable。啟用的意思是說某個執行緒已啟動並且尚未停止。

此外,runnable為非thread子類的類提供了一種啟用方式。通過例項化某個thread例項並將自身作為執行目標,就可以執行實現runnable的類而無需建立thread的子類。大多數情況下,如果只想重寫run()方法,而不重寫其他thread方法,那麼應使用runnable介面。這很重要,因為除非程式設計師打算修改或增強類的基本行為,否則不應為該類建立子類。

java當中實現執行緒的兩種方法

1,繼承thread類,然後重寫run方法 2,實現runnable介面,然後重寫run方法 兩種方法的區別於聯絡 平時我們盡量使用實現介面的方法來實現執行緒 啟動方式不同 thread類 只需要new乙個例項就能夠呼叫start方法 例如 cat cat new cat cat.start run...

建立執行緒的兩種方法

有兩種方式 從tread中派生出新的子類 實現runnable介面 還有一種習慣用法 一 從tread中派生出新的子類 建立片段 給執行緒起名 a,並建立 new 型別 執行緒名字 start 完整的建立乙個執行緒,並呼叫 為了給執行緒起名字,建立了域name,並類裡邊建立了構造器 public c...

sql server分頁的兩種方法比較

在sql server資料庫中,如果乙個查詢結果資料量比較大,就需要在查詢的時候分頁,每次只返回其中一頁。下面就將為您講解比較sql server分頁的兩種方法,如果您對sql server分頁感興趣的話,不妨一看。sql server分頁第一種方法 思路是根據頁號取出兩部分資料,比如取出前90條,...