Thread執行緒類及多執行緒

2022-09-06 22:00:43 字數 1856 閱讀 6314

1.程序、執行緒、併發、並行是什麼?

1)程序:作業系統中可以執行多個任務(程式),這些執行的任務(程式)被稱為程序。程式的執行產生程序(記憶體空間、程式執行的堆疊),可以這樣說,程序是作為作業系統分配資源的基本單位。

3)併發:執行緒是併發執行的。作業系統將時間化分為若干個片段(時間片),盡可能的均勻分配給每乙個任務,被分配時間片後,任務就有機會被cpu所執行。微觀上看,每個任務都是走走停停的。但隨著cpu高效的執行,巨集觀上看所有任務都在執行這種都執行的現象稱之為併發,但不是絕對意義上的「同時發生」。

4)並行:乙個時間段,多個任務同時進行,而且多個cpu執行各自的程序。

2.多執行緒的實現

1)繼承thread

通過查閱jdk api文件,thread 類位於j**a.lang中,表示程序中的執行執行緒。實現多執行緒有兩種方式。第一是繼承thread:

1

package

cn.a1.a;23

public

class mythread extends

thread

1112

}13 }

1

package

cn.a1.a;23

public

class

test1

1314}15

16 }

main執行緒和t1執行緒搶占cpu 執行,輸出也是main執行緒和t1執行緒根據內部搶占cpu 執行輸出,不規則,多執行緒在提高cpu利用率的同時,增加程式的複雜度。

main thread:0這是多執行緒mythread

main thread:1mythread:0main thread:2mythread:1main thread:3mythread:2mythread:3main thread:4mythread:4

2)實現runnable介面

用於定義執行緒要執行的任務邏輯。我們定乙個類實現runnable介面,這時我們必須重寫run方法,在其中定義我們要執行的邏輯。之後將runnable交給執行緒去執行。從而實現了執行緒與其執行的任務分離開。將任務分別交給不同的執行緒併發處理,可以使用執行緒的過載構造方法:thread(runnable runnable)。解藕:執行緒與執行緒體解藕,即打斷依賴關係。 如果你學到spring了就知道,spring的ioc就是幹這個的。

演示:

1

package

cn.a1.a1;23

public

class myrun implements

runnable 12}

13 }

1

public

class

test1

1011}12

13 }

輸出不規則的

main0

這是myrun

myrun:0main1

main2

myrun:1myrun:2

繼承thread和實現runnable介面實現多執行緒的優缺點

[1] 繼承thread的執行緒類不能再繼承其他類,實現runnable介面的類還可以繼承其他類。

[2] 實現runnable介面的執行緒類,可以讓多個執行緒共享執行緒實現類的資源

總結:

多執行緒提高了cpu利用率,但程式的複雜度也隨之增加。一旦執行緒開始執行,很難通過其他方式控制線程的軌跡。

多個執行緒搶占cpu導致執行緒的執行軌跡不確定。

多執行緒 Thread類 建立執行緒

package thread 建立執行緒方式一 繼承 thread 類 重寫方法 run 呼叫 start 開啟執行緒 public class onethread extends thread public static void main string args 可以看出,main 方法和 ru...

多執行緒Thread類例項

基於tcp協議的socket通訊,實現多個使用者登入。建立乙個伺服器類server,乙個客戶端類client,乙個繼承於多執行緒類的serverthread,從而實現多個客戶端向單個伺服器的連線。server類 public class server catch ioexception e clie...

多執行緒 Thread類詳解

thread類是j a中實現多執行緒程式設計的基礎類。本節就來介紹下thread類的常用api和常見用法。thread.activecount 這個方法用於返回當前執行緒的執行緒組中活動執行緒的數量,返回的值只是乙個估計值,因為當此方法遍歷內部資料結構時,執行緒數可能會動態更改。thread.che...