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 與之相似的或者說...