訊號燈執行緒

2021-10-04 22:57:40 字數 1608 閱讀 4254

這裡設定了乙個boolean的值,預設值是false

這裡面有二個執行緒,二個執行緒同時進入到tv(想象為容器)這個容器中 ,去拿資料!

注意這裡有乙個boolean型別!! 執行緒進去尋找方法! 當boolean !=true的時候,生產表演了+voice!

當boolean==false的時候!就進去了!!然後睡眠 super.wait()等待; super.notify()喚醒對方

如果滿足條件!例如第乙個play方法滿足! boolean 預設值 flag=false的; 如果滿足if判斷!就要進去!進去遇到 super.wait()就開始等待!讓對方表演!當末尾的flag=true的時候! 又走到 watch方法的if判斷! watch方法裡,if判斷(flagfalse) 而flagtrue; 所以執行下面的資料!產生**了+this.voice 以此類推.

上原始碼:

public

class

testthread

}/**

* 表演類

* @author 戴爾

* */

class

play

extends

thread

@override

public

void

run(

)else}}

}/**

* **類

* @author 戴爾

* */

class

watch

extends

thread

@override

public

void

run()}

}class

tvcatch

(interruptedexception e)

}this

.voice=voice;

system.out.

println

("表演了,"

+voice)

;super

.notify()

; flag=

true;}

/** * **方法

*/public

synchronized

void

watch()

catch

(interruptedexception e)

} system.out.

println

("**了!"

+this

.voice)

;super

.notify()

; flag=

false;}

}

部分執行結果!!

表演了,看動漫

**了!看動漫

表演了,末日崩塌

**了!末日崩塌

執行緒通訊之訊號燈法

訊號燈法是通過乙個標誌位來解決執行緒之間通訊的問題,這裡我們運用演員表演完成觀眾才可以 的邏輯 實現思路 定義三個類 演員 觀眾 互動平台 演員負責表演節目,觀眾負責 節目 互動平台我們用tv這個類來代表,它決定演員何時表演,觀眾何時 package thread public class thre...

訊號燈與自旋鎖對比。

sem就是乙個睡眠鎖.如果有乙個任務試圖獲得乙個已被持有的訊號量時,訊號量會將其推入等待佇列,然後讓其睡眠。這時處理器獲得自由去執行其它 當持有訊號量的程序將訊號量釋放後,在等待佇列中的乙個任務將被喚醒,從而便可以獲得這個訊號量。訊號量一般在用程序上下文中.它是為了防止多程序同時訪問乙個共享資源 臨...

第10章 Posix訊號燈

三種訊號燈 說明 p v操作 互斥鎖 條件變數和訊號量之間的差別 include for o constants include for mode constants include sem t sem open const char name,int oflag sem t sem open co...