我們可能有如下使用場景:
a、b、c三個執行緒,業務需要a執行5遍,然後b執行10遍,然後c執行15遍,如此迴圈
這時候我們可以考慮用到lock的condition機制
public
class
locktest
for(
int i =
0; i <
5; i++
) number =2;
c2.signal()
; lock.
unlock()
;}public
void
print10()
throws interruptedexception
for(
int i =
0; i <
10; i++
) number =3;
c3.signal()
; lock.
unlock()
;}public
void
print15()
throws interruptedexception
for(
int i =
0; i <
15; i++
) number =1;
c1.signal()
; lock.
unlock()
;}public
static
void
main
(string[
] args)
}catch
(interruptedexception e)},
"aaa").
start()
;new
thread((
)->
}catch
(interruptedexception e)},
"bbb").
start()
;new
thread((
)->
}catch
(interruptedexception e)},
"ccc").
start()
;}}
Lock和Condition物件的使用
condition的await 方法 void await throws interruptedexception導致當前執行緒等到發訊號或interrupted 在所有情況下,在此方法返回之前,當前執行緒必須重新獲取與此條件相關的鎖。當執行緒返回時,它保證保持此鎖。實現兩個執行緒交替執行的案例 c...
mutex和condition的用法
分享一下用到的mutex和condition用法。mutex一般有兩種使用情況,一種是單獨使用,保護臨界區。一種是和condition配合使用,可以等待某condition拿到之後再向下走。condition 有兩種signal形式,single和 broadcast,下面例子是signal的,做個...
redis中condition和unless的區別
1.註解的condition和unless的區別,condition對傳入值生效,unless對結果result生效,使用了錯誤的result導致報空錯誤 2.key鍵生成策略,不能再key中直接呼叫工具類的方法,將方法寫在同乙個類下,使用 root.target.methodname p0.att...