Java多執行緒(1)

2021-07-25 02:38:24 字數 2412 閱讀 8838

程序(process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。所有執行中的任務通常就是乙個程序,當乙個程式進入記憶體執行時,即變成乙個程序。程序是處於執行過程中的程式。

程序的三個特徵:

動態性:程式是乙個靜態的指令集合,程序是乙個正在系統中活動的指令集合。

併發性:多個程序可以在單個處理器上併發執行,多個程序之間互不影響。

2.1、繼承thread類建立執行緒類

通過繼承thread類來建立並啟動多執行緒的步驟

1、定義thread的子類,並重寫run()方法,該方法就是執行緒執行體。

2、建立thread子類的例項

3、呼叫執行緒物件的start()方法來啟動該執行緒,不論使用什麼方式建立執行緒,啟動都是呼叫start()方法

package usethread;

public

class

firstthread

extends

thread

}public

static

void

main(string args) }}

}

2.2、實現runnable介面建立執行緒類

實現runnable介面建立執行緒類

1、定義runnable介面的實現類,並重寫該介面的run()方法,該方法就是執行緒執行體

2、建立runnable實現類的例項,並以此例項作為thread的target來建立thread物件,該物件才是真正的執行緒物件(thread中的構造方法,詳細請看api)

3、呼叫執行緒物件的start()方法來啟動該執行緒

package usethread;

public

class

secondthread

implements

runnable

}public

static

void

main(string args) }}

}

2.3、使用callable和future建立執行緒類

略3.1、新建和就緒狀態

當使用new關鍵字建立了乙個執行緒之後,該執行緒就處於新建狀態,當執行緒物件呼叫了start()方法之後,該執行緒處於就緒狀態,處於這個狀態的執行緒並沒有開始執行,只是表示該執行緒可以執行了,至於該執行緒 何時開始執行,取決於jvm裡執行緒排程器的排程。

3.2、執行和阻塞狀態

如果處於就緒狀態的執行緒獲得了cpu,開始執行run()方法的執行緒執行體,則執行緒處於執行狀態。乙個執行緒不可能一直處於執行狀態,執行緒在執行中需要被中斷,目的是使其他程序獲得執行的機會。

當發生如下情況時,執行緒將會進入阻塞狀態

1、執行緒呼叫sleep()方法主動進圖阻塞狀態

2、執行緒呼叫了乙個阻塞式io方法

3、執行緒試圖獲得乙個同步***,但該執行緒正被其他執行緒所持有

4、執行緒在等待某個通知

5、程式呼叫了執行緒的suspend()方法將該執行緒掛起,易產生死鎖

當發生如下情況時,執行緒將會解除阻塞狀態

1、呼叫sleep()方法的執行緒經過了指定的時間

2、執行緒呼叫的阻塞式io方法已經返回

3、執行緒成功地獲得了試圖取得的同步***

4、執行緒正在等待某個通知時,其他程序發出了乙個通知

5、處於掛起狀態的執行緒被呼叫了resume()恢復方法

3.3、執行緒死亡

執行緒會以如下三種方式結束,結束後就處於死亡狀態

1、run()或call()方法執行完成,執行緒正常結束

2、執行緒丟擲乙個未不活的exception或error

3、直接呼叫該執行緒的stop()方法結束執行緒,易導致死鎖

package usethread;

public

class

startdead

extends

thread

}public

static

void

main(string args) }}

}

java 多執行緒1

public class threadtest extends thread thread.sleep 100 system.out.println this.getname i catch interruptedexception e public static void main string ...

Java 多執行緒1

程序 執行著的應用程式 程序之間的記憶體不是共享的。多執行緒 在單個程序中同時執行多個執行緒完成不同的工作。關於多執行緒 1 程序內併發執行的 段 單核cpu巨集觀上並行,微觀上還是序列 2 執行緒之間共享記憶體 3 主要用於建立靈活相應的桌面程式 4 每個執行著的執行緒對應乙個stack 5 每個...

java多執行緒練習1

5輛汽車過隧道,隧道一次只能通過一輛汽車,每輛汽車通過時間不固定 1 class threaddemo2 227 catch exception e 29 system.out.println 所有車都已經通過隧道了 30 31 3233 使用單個執行緒類實現 34class car extends...