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...