控制同步的方法
(已過時)加鎖 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開始,即用無鎖演算法實現。
posted @
2018-10-07 10:52
chenps 閱讀(
...)
編輯收藏
控制線程同步的方法
控制同步的方法 已過時 加鎖 synchronized 互斥鎖 缺點 併發效率低下 synchronized synchronized obj 對obj加鎖的同步 塊 只有拿到obj鎖標記的執行緒,才能進入對obj加鎖的同步 塊 public synchronized void m 對this加鎖的...
控制線程的方法
控制線程的方法有join sleep 休眠 yield 讓步 suspend 掛起 resume 恢復 簡單的測試下sleep 和yield 並說明執行緒在這兩種狀態下對cpu的持有狀態和對同步鎖的持有狀態 在這裡不貼出程式執行的結果,大家可以根據 在自己的機器上跑一 會一下我接下來要闡述的,這要看...
執行緒控制(執行緒同步 執行緒安全)
一 執行緒同步 當多個控制線程共享相同的記憶體時,需要確保每個執行緒看到一致的資料。如果當某個執行緒可以去修改變數,而其他執行緒也可以去讀取或者修改這個變數的時候,就需要對這些執行緒進行同步控制,以確保它們在訪問變數的儲存內容時不會訪問到無效的數值。同步 多程序或者多執行緒訪問臨界資源時,必須進行同...