我正在研究Java代码,我需要在其中实现线程。我正在通过JAVA 8 API,我了解了Stamped Locks。谁能告诉我为什么在多线程中使用StampedLocks?

提前致谢。

最佳答案

StampedLock是使用ReadWriteLock的替代方法(由ReentrantReadWriteLock实现)。 StampedLock和ReentrantReadWriteLock之间的主要区别在于:

  • StampedLocks允许乐观锁定读取操作
  • ReentrantLocks是可重入的(不是StampedLocks)

  • 因此,如果您遇到争用的情况(否则,最好使用synchronized或简单的Lock),并且读取者多于写入者,那么使用StampedLock可以显着提高性能。

    但是,您应该在得出结论之前,根据您的特定用例来衡量性能。

    Heinz Kabutz写了StampedLocks in his newsletter,他也写了a presentation about performance

    10-04 17:16