ReentrantLock 与 stampedlock 有什么区别?更喜欢哪一个?

Kay*_*ayV 2 java concurrency locking reentrantlock java-8

在 ReentrantLock 和 StampedLock 之间进行选择的用例应该是什么?例如,如果我有 10 个读者和 10 个写者,应该选择哪种锁?如果我有 20 位读者和 1 位作者,该选择哪一个?

the*_*472 5

ReentrantLock正如其名称和javadoc所说,是可重入的。StampedLock 不是。

StampedLock 是一个低级构建块,具有一些脆弱的行为以及与 java 内存模型的复杂交互。应避免使用它,除非您了解其所有属性并已分析代码以确定某些内容实际上在锁定方面存在瓶颈。