Lock 的实现
Lock本質上是一個接口,它定義了釋放鎖和獲得鎖的抽象方法,定義成接口就意味著它定義了鎖的一個標準規范,也同時意味著鎖的不同實現。實現Lock接口的類有很多,以下為幾個常見的鎖實現
ReentrantLock:表示重入鎖,它是唯一一個實現了Lock接口的類。重入鎖指的是線程在獲得鎖之后,再次獲取該鎖不需要阻塞,而是直接關聯一次計數器增加重入次數
ReentrantReadWriteLock:重入讀寫鎖,它實現了ReadWriteLock接口,在這個類中維護了兩個鎖,一個是ReadLock,一個是WriteLock,他們都分別實現了Lock接口。讀寫鎖是一種適合讀多寫少的場景下解決線程安全問題的工具,基本原則是:?讀和讀不互斥、讀和寫互斥、寫和寫互斥。也就是說涉及到影響數據變化的操作都會存在互斥。
StampedLock:?stampedLock是JDK8引入的新的鎖機制,可以簡單認為是讀寫鎖的一個改進版本,讀寫鎖雖然通過分離讀和寫的功能使得讀和讀之間可以完全并發,但是讀和寫是有沖突的,如果大量的讀線程存在,可能會引起寫線程的饑餓。stampedLock是一種樂觀的讀策略,使得樂觀鎖完全不會阻塞寫線程
?
總結
- 上一篇: Lock 简介
- 下一篇: ReentrantLock重入锁