多執行緒二之執行緒排程

2021-10-01 03:18:33 字數 2622 閱讀 4587

1、執行緒休眠sleep():呼叫執行緒的sleep()方法使執行緒從執行狀態進入阻塞狀態,暫時讓出cpu資源,當休眠結束又進入就緒狀態爭奪cpu資源,多執行緒共享資源的時候,執行緒呼叫sleep()不會釋放執行緒鎖。

public

class

myrunnable

implements

runnable

}}

public

class

test}}

}

當主線程執行到第五次的時候休眠兩秒,讓出cpu資源讓另乙個執行緒執行

012

345我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

我是建立執行緒的第二種方法

main執行緒休眠了67

89

2、執行緒合併join()

本來兩個執行緒交替執行,但是當某一時刻,某乙個執行緒突然插入另乙個正在執行的執行緒中,就會占用當前的cpu,使得正在執行的執行緒進入阻塞狀態,sleep()和join()的區別,在多執行緒共享同一資源的情況下,sleep()即使休眠了也不釋放執行緒鎖,我冬眠也要抱著鎖,而join()方法是釋放執行緒鎖的,來你急你先來,鎖給你

public

class

threadjoin

implements

runnable

}}

public

class

test

catch

(interruptedexception e)}}

}}

012

345threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

threadjoin

3、執行緒禮讓yield()

很明顯按照字面意思,執行緒禮讓就是禮貌的相讓,一般情況下執行緒是有優先順序的,優先順序高的執行緒相對來說獲得時間片就更加容易,在所有執行緒都執行的情況下,優先順序高的執行緒會先獲取cpu資源,但事無絕對。

public

class

threada

extends

thread

}}

public

class

threadb

extends

thread

}}

public

class

test

}

上邊的控制台結果是沒設定禮讓的,後20條資料基本是優先順序低的b執行緒,由於資料量小,結果不夠明顯,故而取後邊20條做參考

我是執行緒b.

80我是執行緒b.

81我是執行緒b.

82我是執行緒b.

83我是執行緒b.

84我是執行緒b.

85我是執行緒b.

86我是執行緒b.

87我是執行緒b.

88我是執行緒b.

89我是執行緒b.

90我是執行緒b.

91我是執行緒b.

92我是執行緒b.

93我是執行緒b.

94我是執行緒b.

95我是執行緒b.

96我是執行緒b.

97我是執行緒b.

98我是執行緒b.

99

這是禮讓後的結果,優先順序低的b在前邊就能執行了

我是執行緒a.

79我是執行緒a.

80我是執行緒a.

81我是執行緒a.

82我是執行緒a.

83我是執行緒a.

84我是執行緒a.

85我是執行緒a.

86我是執行緒a.

87我是執行緒a.

88我是執行緒a.

89我是執行緒a.

90我是執行緒a.

91我是執行緒a.

92我是執行緒a.

93我是執行緒a.

94我是執行緒a.

95我是執行緒a.

96我是執行緒a.

97我是執行緒a.

98我是執行緒a.

99

4、執行緒中斷

1、執行緒執⾏完畢之後⾃動停⽌。

2、執行緒在執⾏過程**現錯誤停⽌。

3、執行緒在執⾏過程中⼿動停⽌。

public void stop()

public void interrupt()

public boolean isinterrupt()

Java多執行緒 執行緒排程Join

public final void join throws interruptedexception 等待該執行緒終止。public final void join long millis throws interruptedexception 等待該執行緒終止的時間最長為 millis 毫秒。超時...

多執行緒 執行緒與程序 執行緒排程 建立執行緒

步驟 定義thread類的子類,並重寫該類的run 方法,該run 方法的方法體就代表了執行緒需要完成的任務,因此把run 方法稱為執行緒執行體。建立thread子類的例項,即建立了執行緒物件 呼叫執行緒物件的start 方法來啟動該執行緒 測試 自定義執行緒類 public class mythr...

Java多執行緒 執行緒的排程 讓步

執行緒的讓步含義就是使當前執行著執行緒讓出cpu資源,但是扔給誰不知道,僅僅是讓出,執行緒狀態回到可執行狀態。執行緒的讓步使用thread.yield 方法,yield 為靜態方法,功能是暫停當前正在執行的執行緒物件,並執行其他執行緒。package cn.thread 執行緒的排程 讓步 auth...