ReadWriteLock vs StampedLock

vto*_*tor 2 java multithreading java.util.concurrent java-8

我一直在使用ReadWriteLock来实现/维护锁定习语.

自JDK8 StampedLock推出以来.由于RWLocks以其缓慢和糟糕的性能而闻名,因此StampedLock看起来像是另一种选择(它们不是可重入的,速度更快).

然而,除了性能之外,我认为StampedLock的维护和使用更加困难和复杂 - 例如线程现在可以自行解锁 - 因此应采取相应的措施.

StampedLock比RWLock有什么好处?

lba*_*scs 5

该文章详细解释的差异.

ReentrantReadWriteLock有很多缺点:它遭受了饥饿.您无法将读锁升级为写锁.没有乐观读数的支持."熟悉"的程序员大多避免使用它们.

Doug Lea的新Java 8 StampedLock解决了所有这些缺点.通过一些聪明的代码习语,我们也可以获得更好的性能.

  • 注意:StampedLock更难使用,具体取决于您在锁定时要执行的操作. (3认同)