【Java】通俗易懂的JUC源码剖析-StampedLock
通俗易懂的JUC源码剖析-StampedLock
小强大人发布于 今天 14:56
StampedLock的作用
StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。
StampedLock有三种模式mode和一个版本号stamp。
三种模式:
悲观写模式:writeLock(),获取成功时,其他获取写锁或读锁的线程需阻塞等待。
悲观读模式:readLock(),多个线程可以同时获取读锁,获取写锁的线程需要等待。常用于读少写多的场景。
乐观读模式:tryOptimisticRead(),只是简单的位运算测试并返回stamp值,没有CAS获取锁的过程,因此性能比较高,常用于读多写少的场景。
版本号stamp:
当调用StampedLock类中获取锁的系列函数时,会返回一个long型的stamp,它用来表示锁的状态。其中try系列的获取锁函数,如果获取失败了会返回0。当调用释放锁或转换锁(3种模式锁相互转换)的函数时,需要把获取锁返回的stamp作为参数,传入函数中。
后续再更新...感兴趣的同学记得关注哦^_^
阅读 44发布于 今天 14:56
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
小强大人
9 声望
1 粉丝
小强大人
9 声望
1 粉丝
宣传栏
目录
StampedLock的作用
StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。
StampedLock有三种模式mode和一个版本号stamp。
三种模式:
悲观写模式:writeLock(),获取成功时,其他获取写锁或读锁的线程需阻塞等待。
悲观读模式:readLock(),多个线程可以同时获取读锁,获取写锁的线程需要等待。常用于读少写多的场景。
乐观读模式:tryOptimisticRead(),只是简单的位运算测试并返回stamp值,没有CAS获取锁的过程,因此性能比较高,常用于读多写少的场景。
版本号stamp:
当调用StampedLock类中获取锁的系列函数时,会返回一个long型的stamp,它用来表示锁的状态。其中try系列的获取锁函数,如果获取失败了会返回0。当调用释放锁或转换锁(3种模式锁相互转换)的函数时,需要把获取锁返回的stamp作为参数,传入函数中。
后续再更新...感兴趣的同学记得关注哦^_^
以上是 【Java】通俗易懂的JUC源码剖析-StampedLock 的全部内容, 来源链接: www.h5w3.com/114259.html
得票时间