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

What is the difference between ReentrantLock vs stampedlock? Which one to prefer?

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

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

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