控制線程同步的方法

2022-09-11 15:24:50 字數 838 閱讀 2581

控制同步的方法

(已過時)加鎖 synchronized 互斥鎖 缺點: 併發效率低下

synchronized

synchronized(obj)     對obj加鎖的同步**塊

只有拿到obj鎖標記的執行緒, 才能進入對obj加鎖的同步**塊

​public synchronized void m(){}     對this加鎖的同步**塊

只有拿到obj鎖標記的執行緒,才能呼叫obj的同步方法

鎖分級 readwritelock 寫鎖分配時,讀鎖不能分配;寫鎖未分配時,讀鎖可以多次分配

class vector

public void remove()

//讀方法 獲取集合中的資料

public void size()

public void get()

}

鎖分段 concurrenthashmap 在jdk5-7,不對整個map加鎖,而是把map分成16個片段,對每個片段單獨加鎖

無鎖演算法 用cas 比較交換演算法實現 concurrenthashmap 在jdk8,採用無鎖演算法

簡單理解一下cas演算法,例如:把a =old值,替換為a= new值

while(true)

}

面試中會問執行緒同步問題,concurrenthashmap是從jdk5出現的,在jdk5-7,concurrenthashmap 是用分段鎖實現,從jdk8開始,即用無鎖演算法實現。

控制線程同步的方法

控制同步的方法 已過時 加鎖 synchronized 互斥鎖 缺點 併發效率低下 synchronized synchronized obj 對obj加鎖的同步 塊 只有拿到obj鎖標記的執行緒,才能進入對obj加鎖的同步 塊 public synchronized void m 對this加鎖的...

控制線程的方法

控制線程的方法有join sleep 休眠 yield 讓步 suspend 掛起 resume 恢復 簡單的測試下sleep 和yield 並說明執行緒在這兩種狀態下對cpu的持有狀態和對同步鎖的持有狀態 在這裡不貼出程式執行的結果,大家可以根據 在自己的機器上跑一 會一下我接下來要闡述的,這要看...

執行緒控制(執行緒同步 執行緒安全)

一 執行緒同步 當多個控制線程共享相同的記憶體時,需要確保每個執行緒看到一致的資料。如果當某個執行緒可以去修改變數,而其他執行緒也可以去讀取或者修改這個變數的時候,就需要對這些執行緒進行同步控制,以確保它們在訪問變數的儲存內容時不會訪問到無效的數值。同步 多程序或者多執行緒訪問臨界資源時,必須進行同...