多執行緒 執行緒安全

2021-09-25 16:50:46 字數 431 閱讀 1356

原因:

當多個執行緒同時共享,同乙個全域性變數或靜態變數。做寫的操作時,可能發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。

解決方案:

方式一:內建鎖synchronized

synchronized保證執行緒原子性,當執行緒進入方法的時候,自動獲取鎖,一旦鎖被其它執行緒獲取之後,其它的執行緒就會等待。

方式二:同步方式

1、同步**塊

synchronized(任意全域性物件)

同步**塊需要注意的事項:

1.鎖物件可以是任意的乙個物件;

2.乙個執行緒在同步**塊中sleep了,並不會釋放鎖物件;

4.鎖物件必須是多執行緒共享的乙個資源,否則鎖不住。

2、同步方法:非靜態同步方法與靜態同步方法

修飾在方法上,非靜態同步方法用的是this證明鎖。

多執行緒 執行緒安全

public class unsafethread t.start while thread.activecount 1 system.out.println sum 1 從主記憶體中講sum變數複製到執行緒的工作記憶體 2 在工作記憶體中修改變數 1操作 3 將sum變數從執行緒的工作記憶體寫回到...

多執行緒 執行緒安全

執行緒安全 多個執行流對臨界資源的爭搶訪問,但是不會出現資料二義性 執行緒安全的實現 同步 通過條件判斷保證對臨界資源訪問的合理性 互斥 通過同一時間對臨界資源訪問的唯一性實現臨界資源訪問的安全性 互斥鎖實現的原理 互斥鎖本身是乙個只有0 1的計數器,描述了乙個臨界資源當前的訪問狀態,所有執行流在訪...

多執行緒安全

專案中需要在多執行緒環境下,輸出日誌到標準輸出,以下是實現過程。首先,我們需要乙個鎖類,能夠自動初始化,並且降低耦合。locker.h created on apr 14,2012 author joan ifndef locker h define locker h include option....