建立多執行緒的4種方式 Thread類中的常用方法

2021-09-23 15:19:18 字數 1541 閱讀 6520

多執行緒的建立方式一:繼承於thread類

1. 建立乙個繼承於thread類的子類

2. 重寫thread類的run() --> 將此執行緒執行的操作宣告在run()中

3. 建立thread類的子類的物件

4. 通過此物件呼叫start()

說明兩個問題:

問題一:我們啟動乙個執行緒,必須呼叫start(),不能呼叫run()的方式啟動執行緒。

問題二:如果再啟動乙個執行緒,必須重新建立乙個thread子類的物件,呼叫此物件的start().

多執行緒的建立方式二:實現runnable介面

1. 建立乙個實現了runnable介面的類

2. 實現類去實現runnable中的抽象方法:run()

3. 建立實現類的物件

4. 將此物件作為引數傳遞到thread類的構造器中,建立thread類的物件

5. 通過thread類的物件呼叫start()

兩種方式的對比:

開發中:優先選擇:實現runnable介面的方式

原因:1. 實現的方式沒類的單繼承性的侷限性

2. 實現的方式更適合來處理多個執行緒共享資料的情況。

聯絡:public class thread implements runnable

相同點:兩種方式都需要重寫run(),將執行緒要執行的邏輯宣告在run()中。

目前兩種方式,要想啟動執行緒,都是呼叫的thread類中的start()。

多執行緒的建立方式三:實現callable介面 — jdk 5.0新增

1. 建立乙個實現callable的實現類

2. 實現call方法,將此執行緒需要執行的操作宣告在call()中

3. 建立callable介面實現類的物件

4. 將此callable介面實現類的物件作為傳遞到futuretask構造器中,建立futuretask的物件

5. 將futuretask的物件作為引數傳遞到thread類的構造器中,建立thread物件,並呼叫start()

6. 獲取callable中call方法的返回值

多執行緒建立的方式四:使用執行緒池 — jdk 5.0新增

1. 提供指定執行緒數量的執行緒池

2. 執行指定的執行緒的操作。需要提供實現runnable介面或callable介面實現類的物件

3. 關閉連線池

執行緒的優先順序:

* max_priority:10

* min _priority:1

* norm_priority:5 -->預設優先順序

如何獲取和設定當前執行緒的優先順序:

getpriority():獲取執行緒的優先順序

setpriority(int p):設定執行緒的優先順序

說明:高優先順序的執行緒要搶占低優先順序執行緒cpu的執行權。但是只是從概率上講,高優先順序的執行緒高概率的情況下被執行。並不意味著只當高優先順序的執行緒執行完以後,低優先順序的執行緒才執行。

執行緒通訊:wait() / notify() / notifyall() :此三個方法定義在object類中的。

補充:執行緒的分類

一種是守護執行緒,一種是使用者執行緒。

建立執行緒的4種方式

建立執行緒的四種方式 一 繼承thread類 繼承thread類建立執行緒的步驟為 1 建立乙個類繼承thread類,重寫run 方法,將所要完成的任務 寫進run 方法中 2 建立thread類的子類的物件 3 呼叫該物件的start 方法,該start 方法表示先開啟執行緒,然後呼叫run 方法...

建立多執行緒的7種方式

1,繼承thread 主要掌握 執行緒的初始化,啟動,中斷的正確處理方式 interrupted public class demo1 class mythread extends thread 2,實現runnable 原始碼解析,為什麼會呼叫runnable的run方法 public class...

多執行緒 兩種方式建立執行緒

第一種方式 繼承thread類 public class threaddemo extends thread catch interruptedexception e if s 50 public static void main string args 第二種方式 實現runnable介面 pub...