個人學習筆記! 1)分散式鎖的實現?①資料庫實現單點、非重入、非阻塞、無失效時間、依賴資料庫(要自己設置,可結合排它鎖、樂觀鎖、悲觀鎖等混合使用)②緩存(Redis等)集群部署解決單點問題、分散式鎖方法直接調用即可(redis的setnx方法)、設置超時時間控制鎖的釋放③zka.集群部署(解決單點問 ...
個人學習筆記!
1)分散式鎖的實現?
①資料庫實現
單點、非重入、非阻塞、無失效時間、依賴資料庫(要自己設置,可結合排它鎖、樂觀鎖、悲觀鎖等混合使用)
②緩存(Redis等)
集群部署解決單點問題、分散式鎖方法直接調用即可(redis的setnx方法)、設置超時時間控制鎖的釋放
③zk
a.集群部署(解決單點問題)
b.唯一的瞬時有序被綁定監聽器的節點(解決鎖釋放、非阻塞問題)
c.節點中寫入主機信息和線程信息(解決非重入)
2)ReentrantLock中非公平鎖的核心代碼是哪三行?
if (c == 0) {
if (compareAndSetState(0, acquires)) {
setExclusiveOwnerThread(current);
return true;
}
}
//認可插隊行為
3)Lock的鎖方式與synchronized鎖對象的方式有什麼本質區別?
Lock 介面的實現允許鎖在不同的作用範圍內獲取和釋放,並允許以任何順序獲取和釋放多個鎖。
例:鎖鏈