StampedLock的作用

StampedLock是JDK1.8新增的类,它相似ReadWriteReentrantLock,也有读写锁的性能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。

StampedLock有三种模式mode和一个版本号stamp。

三种模式:
乐观写模式:writeLock(),获取胜利时,其余获取写锁或读锁的线程需阻塞期待。
乐观读模式:readLock(),多个线程能够同时获取读锁,获取写锁的线程须要期待。罕用于读少写多的场景。
乐观读模式:tryOptimisticRead(),只是简略的位运算测试并返回stamp值,没有CAS获取锁的过程,因而性能比拟高,罕用于读多写少的场景。

版本号stamp:
当调用StampedLock类中获取锁的系列函数时,会返回一个long型的stamp,它用来示意锁的状态。其中try系列的获取锁函数,如果获取失败了会返回0。当调用开释锁或转换锁(3种模式锁互相转换)的函数时,须要把获取锁返回的stamp作为参数,传入函数中。

后续再更新...感兴趣的同学记得关注哦^_^