博客
关于我
ReentrantReadWriteLock读写锁底层实现、StampLock详解
阅读量:794 次
发布时间:2023-02-27

本文共 1727 字,大约阅读时间需要 5 分钟。

读写锁与StampLock详解

读写锁

读写锁是一种常用的锁定机制,特别适用于读多写少的场景。其特点是读读不互斥,读写与写写互斥。读写锁通过允许多个读操作同时进行,而只需一个写操作独占资源来提高系统效率。

基本使用

读写锁通常采用ReentrantReadWriteLock实现。以下是基本使用示例:

private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private Lock r = readWriteLock.readLock();
private Lock w = readWriteLock.writeLock();
// 读操作
public Data get(String key) {
r.lock();
try {
// TODO 业务逻辑
} finally {
r.unlock();
}
}
// 写操作
public Data put(String key, Data value) {
w.lock();
try {
// TODO 业务逻辑
} finally {
w.unlock();
}
}

整体结构

读写锁的顶层规范接口为ReadWriteLock,常用的实现类是ReentrantReadWriteLock。该类通过实现ReadWriteLock接口提供了读锁和写锁的功能。ReentrantReadWriteLock内部定义了读锁和写锁,并通过Sync同步器支持公平锁和非公平锁的实现。

public interface ReadWriteLock {
Lock readLock();
Lock writeLock();
}
public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable {
private static final long serialVersionUID = -6992448646407690164L;
private final ReentrantReadWriteLock.ReadLock readerLock;
private final ReentrantReadWriteLock.WriteLock writerLock;
final Sync sync;
public ReentrantReadWriteLock() {
this(false);
}
public ReentrantReadWriteLock(boolean fair) {
sync = fair ? new FairSync() : new NonfairSync();
readerLock = new ReadLock(this);
writerLock = new WriteLock(this);
}
public ReentrantReadWriteLock.WriteLock writeLock() {
return writerLock;
}
public ReentrantReadWriteLock.ReadLock readLock() {
return readerLock;
}
}

读锁与写锁

读锁和写锁分别实现了Lock接口。在加锁与解锁时,读锁和写锁都会调用同步器中对共享锁操作的方法。ReentrantReadWriteLock定义了五个内部类来支持公平锁与非公平锁的实现,确保不同情况下的锁定机制高效且安全。

StampLock是一种基于时间的锁定机制,常用于防止数据篡改。其核心思想是通过对数据加密和时间戳来确保数据的完整性和唯一性。

转载地址:http://mevfk.baihongyu.com/

你可能感兴趣的文章
Pdfkit页眉和页脚
查看>>
PDF中的Pandoc语法突出显示不起作用
查看>>
pdf从结构新建书签_在PDF文件中怎样创建书签
查看>>
pdf做成翻页电子书_第一弹:常见BOOX电子书阅读器问题解答,这些技能你都会吗?...
查看>>
PDF工具箱-分割提取合并
查看>>
pdf打印骑缝章
查看>>
PDF文字识/编辑?这个工具真的很强大!
查看>>
pdf文档出现乱码如何修改
查看>>
pdf根据模板导出
查看>>
PDF调出本来存在的书签面板
查看>>
pdf转图片
查看>>
pdf转图片、提取pdf文本、提取pdf图片
查看>>
springMvc 3.0 使用基本原理
查看>>
springCloud整合RabbitMQ实现消息中间件
查看>>
pdo sqlserver
查看>>
SpringCloud实战(十一)-更优的分布式配置解决方案(Apollo)
查看>>
PDO中捕获SQL语句中的错误
查看>>
SCP和SFTP相同点和区别
查看>>
SpringCloudAlibaba中使用Sentinel实现熔断降级之熔断策略详解
查看>>
peek和pop的区别
查看>>