簡體   English   中英

ReadWriteLock與StampedLock

[英]ReadWriteLock vs StampedLock

我一直在使用ReadWriteLock來實現/維護鎖定習慣用法。

從JDK8開始, StampedLock被引入。 而且由於RWLocks的緩慢性和不良性能而聞名,StampedLock看起來像是一種替代品(它們不是可重入的,所以速度更快)。

但是,除了性能之外,在我看來,StampedLock的維護和使用起來更加困難和復雜-例如,線程現在可以對自己進行死鎖-因此應采取相應的措施。

StampedLock相對RWLock有什么好處?

本文詳細解釋了差異。

ReentrantReadWriteLock有很多缺點:遭受了飢餓。 您無法將讀取鎖升級為寫入鎖。 不支持樂觀閱讀。 “知道”的程序員大多避免使用它們。

Doug Lea的新Java 8 StampedLock解決了所有這些缺點。 通過一些巧妙的代碼習慣用法,我們還可以獲得更好的性能。

好吧,是的,ReentrantReadWriteLock在5.0中有問題(與傳統的同步塊相比),但在Java 6.0中已解決。

因此,如果您在生產中使用Java 6,則可以放心使用lock API。

性能明智的鎖定和傳統同步功能可為您提供相同的效果。

鎖API的好處是它使用CAS /非阻塞,因此除非您忘記在finally塊中解鎖它,否則它永遠不會死鎖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM