關於wait notify以及順序列印

2021-10-01 12:45:29 字數 1729 閱讀 5029

1.等待和喚醒是同乙個物件

2.notify只會喚醒乙個執行緒

使用角度

1.object.wait() 會丟擲 interruptedexception

2.呼叫object.wait() 必須首先對object(monitor lock) 進行加鎖

class

main

try}

catch

(interruptedexception e)

for(

int i =

0; i <

10; i++)}

}public

static

void

main

(string[

] args)

}}

sync(object)

呼叫到wait 釋放鎖,進入waiting狀態,從等待集出來只會,還會再加一次鎖(請求鎖)

注意事項:

必須先加鎖,才能呼叫wait

wait和notify必須是同一物件

wait會釋放鎖(等待在哪個物件上,釋放哪個鎖)

wait返回之前,需要再次加鎖

notify只會喚醒乙個,並且是隨機

notifyall會喚醒所有的

wait和notify之間的時序很重要

順序列印

public

class

printinorder

wait()

;}public

synchronized

void

second()

throws interruptedexception

wait()

;}public

synchronized

void

third()

throws interruptedexception

wait()

;}private

static

class

printone

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)}}

}private

static

class

printtwo

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)}}

}private

static

class

printthree

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)}}

}public

static

void

main

(string[

] args)

throws interruptedexception

}

多執行緒順序列印以及生產消費者

include include include include using namespace std std mutex mtx std condition variable cv int num 1 const int n 99 int i 0 void print a if i n cv.no...

關於學習以及知識

學習這種東西,在我看來,一定是要堅持的,如果不能持續的學習,一段時間學習一點東西,過了一段時間之後又忘掉,這種只是浪費時間而已。但是又除了原理性的知識,有時候需要學習的東西,需要在一段時間內拼命的血,以此去了解它,完全理解它,這就相當於一種思想,一種思維方式,一旦理解了就會印在你的腦海了,等到日後或...

php 關於if以及bool

一篇關於if以及bool的軟文 if是我們在程式中經常用到,例如 if expr statement此表示式中expr為判斷條件,一般返回值返回值為 或者 如果expr不為bool時候,會強制轉換 當為 時執行statement否則不執行 具體使用如下 a 1 b o if a b 與之相似的或者說...