java執行緒同步之CountDownLatch

2021-06-20 07:23:37 字數 627 閱讀 1513

1、類說明

jdk的concurrent包中的countdownlatch類是乙個執行緒同步的輔助類,它使得執行緒可以一直等待在其它執行緒中執行的操作,直到此操作結束。countdownlatch在初始化的時候指定乙個大小值n,呼叫countdownlatch的await方法的執行緒會陷入等待之中,直到這個countdownlatch物件的countdown方法被呼叫n次為止,無論是在乙個執行緒中呼叫n次,還是在n個執行緒中被呼叫一次。只有這個對應的countdownlatch物件的countdown方法總被呼叫次數為n次之後,這個等待的執行緒才能繼續往下執行。

其原理也容易理解,初始化的時候指定要等待的計數的次數,每呼叫一次countdown就對這個計數減一,直到計數被減到0,等待的執行緒就可以繼續執行了。

2、await

countdownlatch的await方法會使得當前執行緒進入等待狀態,直到最新的一次計數被減到0為止。如果當前的計數已經是0了,那麼這個方法會馬上返回。這個函式有個代參的過載函式,可以設定乙個最長的等待時長。在等待時長內,如果計數器被減到0,這個函式會返回true,或者達到等待時長,這個函式會返回false。(被中斷情況下拋異常)

3、countdown

使計數減一,初始化的計數不能重新設定,只能通過countdown來對計數減一

java執行緒同步之synchronized

同步指的是呼叫乙個方法時,在沒有得到結果之前,這個呼叫就不返回。執行緒同步的意思與之類似,但執行緒同步並不是說讓乙個執行緒執行完了再執行其它執行緒,一般是指讓執行緒中的某一些操作進行同步就可以。執行緒安全就是多執行緒訪問時,採用了加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進...

java 執行緒 執行緒同步

threadlocal與其它同步機制的比較 threadlocal和其他所有的同步機制都是為了解決多執行緒中的對同一變數的訪問衝突。在普通的同步機制中,是通過對物件加鎖來實現多個執行緒對同一變數的安全訪問的。這時該變數是多個執行緒共享的,使用這種同步機制需要很細緻的分析在什麼時候對變數進行讀寫,什麼...

java同步執行緒

同步執行緒 synchronized方法 乙個類中任何方法都可以定義為synchronized方法以防止多執行緒資料崩潰。當某個物件用synchronized方法修飾時,表明該物件在任一時刻只能由乙個執行緒訪問。宣告方法體的一般格式 modifier synchronized returntype ...