多執行緒同步的五種方法

2022-07-14 09:24:11 字數 481 閱讀 2663

為什麼要執行緒同步?

當多個執行緒同時訪問乙個變數或物件時,如果這些執行緒既有讀又有寫操作時,就會導致變數值或物件的狀態出現混亂。

1)synchronized關鍵字修飾的方法

2)同步**塊:既有synchronized修飾的語句塊,語句塊會自動加上鎖

3)使用特殊變數volatile實現執行緒同步

volatile關鍵字為域變數的訪問提供了一種免鎖機制

使用volatile修飾域相當於告訴虛擬機器該域可能會被其他執行緒更新

因此每次使用該域就要重新計算,而不是使用暫存器的值

volatile不會提供任何原子操作,它也不能用來修飾final型別的變數

4)使用重入鎖實現執行緒同步(reentrantlock)

5)使用區域性變數實現執行緒同步,使用threadlocal管理變數,則每乙個使用該變數的執行緒都獲得該變數的副本,每乙個執行緒都可以隨意修改自己的變數副本,而不會對其他執行緒修改。讀寫分開,採用空間換時間的方法

執行緒同步四種方法

執行緒同步的方法 1 wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。2 sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕捉 interruptedexception異常。3 notify 喚醒乙個處於等待狀態的執行緒,注意的是在呼叫此方法的時候,並...

多執行緒同步方法

今天學習了。用c語言寫的多執行緒程式 同步原來有如此多方法 1.臨界區 臨界區是保證在某乙個時間只有乙個執行緒可以訪問資料的方法。使用它的過程中,需要給各個執行緒提供乙個共享的臨界區物件,無論哪個執行緒占有臨界區物件,都可以訪問受到保護的資料,這時候其它的執行緒需要等待,直到該執行緒釋放臨界區物件為...

多執行緒同步方法

臨界區 critical section 互斥量 mutex 訊號量 semaphore 事件 event 的區別 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源進行訪問,如果有多個執行緒試圖訪問公共資源,那麼在有乙個執行緒進入...