java基礎 23 執行緒的控制與生命週期

2021-07-25 08:26:22 字數 2217 閱讀 4235

static void sleep(long millis) :在指定的毫秒數內讓當前正在執行的執行緒休眠(暫停執行),此操作受到系統計時器和排程程式精度和準確性的影響。

public

class

threadsleep

extends

thread catch (interruptedexception e) }}

}public

static

void

main(string args)

執行結果:

可以看出,3個執行緒每次休眠1秒,喚醒後3個執行緒同時執行一次

public final void join():等待該執行緒終止。

public

class

threadjoin

extends

thread

}}測試用例:

李淵是李世民和李元霸的爹,所以李淵沒出來之前,兩兄弟不能出來

public

class

threadjoindemo catch (interruptedexception e)

tj2.start();

tj3.start();}}

執行結果:最先只有「李淵」執行緒執行,「李淵」執行緒執行完之後,執行緒「李世民」和執行緒「李元霸」才開始搶占式執行

public static void yield(): 暫停當前正在執行的執行緒物件,並執行其他執行緒

public

class

threadyield

extends

thread

}}public

class

threadyielddemo

}

執行結果:預期是:ty1 ty2 執行緒交換輪流執行,由於電腦效能的影響,不會是絕對的預期結果。

public

class

threaddaemon

extends

thread

}}測試用例:

我們將主線程認為是「劉備」,ty1 ty2兩個執行緒分別是守護程序,守護「劉備」,當「劉備」執行結束的時候,ty1 ty2兩個執行緒的執行已經沒有意義了,這兩個執行緒將會自動停止。

public

class

threaddeamondemo }}

執行效果:當主線程「劉備」結束的時候,其他兩個守護執行緒「張飛」和「關羽」自動結束

stop() :終止執行緒的執行(已過時)

interrupt() :中斷執行緒執行 用來代替stop() 方法。把執行緒的狀態終止並丟擲interruptedexception

public

class

threadstop

extends

thread catch (exception e)

system.out.println("結束執行"+ new date());

}}測試用例:

public

class

threadstopdemo catch (exception e) }}

執行結果:ts執行緒打算執行10s,但是主線程中計時,當達到3秒的時候,將ts執行緒終止

執行緒存在5種狀態:

a:新建

b:就緒

c:執行

d:阻塞

e:死亡

執行緒狀態轉換圖:

圖中的箭頭代表執行緒的狀態可能的轉換方向,狀態不能逆向!

java基礎 判斷與迴圈控制語句

判斷與迴圈控制語句 程式的結構 一般來說程式的結構包含有下面三種 1 順序結構 2 選擇結構 3 迴圈結構 順序結構 程式至上而下逐行執行,一條語句執行完之後繼續執行下一條語句,一直到程式的末尾。選擇結構 選擇結構式根據條件的成立與否,再決定要執行哪些語句的一種結構。迴圈結構 迴圈結構則是根據判斷條...

java 多執行緒的併發控制

synchronized必須鎖的是物件,基本資料型別的變數不能當作物件鎖。要保證多執行緒使用的是同乙個互斥鎖 物件鎖 才能進行同步。死鎖的兩種情況 1 多個執行緒共用同乙個物件鎖,互相等待。2 互相持有對方所需的資源 即每個執行緒都需要同時拿到多個資源才能繼續執行,而多個執行緒都處於 各持有一部分,...

java基礎 執行緒的狀態

執行緒建立後,並不會立刻執行,可是要和其他執行緒搶占cpu資源。執行緒從建立到滅亡有七個狀態。首先看不包含其他路徑的乙個執行緒狀態流轉圖 當然,執行緒的執行並不是一帆風順的,其中有很多情況需要考慮。下面增加兩種情況 sleeping wait。sleeping是一種超時等待,時間結束後,繼續去爭用c...