我一直在使用ReadWriteLock来实现/维护锁定习惯用法。

自从引入JDK8以来StampedLock。而且由于RWLocks的缓慢性和不良性能而闻名,StampedLock看起来像是一种替代品(它们不是可重入的,因此速度更快)。

但是,除了性能之外,在我看来,StampedLock的维护和使用起来更加困难和复杂-例如线程现在可以对自己死锁-因此应该采取相应的措施。

StampedLock相对RWLock有什么好处?

最佳答案

article详细说明了差异。

ReentrantReadWriteLock有很多缺点:遭受了饥饿。您无法将读取锁升级为写入锁。不支持乐观阅读。 “知道”的程序员大多避免使用它们。
Doug Lea的新Java 8 StampedLock解决了所有这些缺点。通过一些巧妙的代码习惯用法,我们还可以获得更好的性能。

07-24 09:27