文章目录
StampedLock没有直接实现ReadWriteLock,但是提供了方法可以返回ReadWriteLock接口的实现类,如下:
- 属性
- 构造函数
- 内部类
- 写锁的获取、释放
- 1.写锁的获取
- 2.写锁的释放
- 读锁的获取和释放
- 1.读锁的获取
- 2.读锁的释放
- 乐观读锁获取、校验
- 1.乐观读锁的获取
- 2.乐观读锁的校验
- 锁转换
- 1.转换为写锁
- 2.转换为读锁
- 3.转换乐观读
public Lock asReadLock() {
ReadLockView v;
return ((v = readLockView) != null ? v :
(readLockView = new ReadLockView()));
}
public Lock asWriteLock() {
WriteLockView v;
return ((v = writeLockView) != null ? v :
(writeLockView = new WriteLockView()));
}
public ReadWriteLock asReadWriteLock() {
ReadWriteLockView v;
return ((v = readWriteLockView) != null ? v :
(readWriteLockView = new ReadWriteLockView()));
}
可以通过asReadWriteLock方法与之前使用ReentrantReadWriteLock无缝兼容,也可以通过asReadLock和asWriteLock方法单独使用读锁或者写锁。
属性StampedLock中定义了多个常量,如下:
/**
* @since 1.8
* @author Doug Lea
*/
public class StampedLock implements java.io.Serializable {
private static final long serialVersionUID = -6001602636862214147L;
//处理器数量 用于自旋控制
private static final int NCPU = Runtime.getRuntime().availableProcessors();
//在当前节点加入队列前,如果队列头尾节点相等,即属性whead和wtail相等,
//先让其自旋一定的次数,自旋的值 多核CPU:(1 1) ? 1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?