8.读写锁ReadWriteLock
2024-09-01 15:24:12
/*ReadWriteLock 读写锁*/
private ReadWriteLock lock = new ReentrantReadWriteLock();
lock.readLock().lock(); lock.writeLock().lock();
ReadWriteLock 维护了 /*一对*/ 相关的锁,一个用于只读操作,另一个用于写入操作
只要没有writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的
ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,必须是独占的方式来获取锁。对于读取操作占多数的数据结构。
ReadWriteLock 能提供比独占锁更高的并发性。而对于只读的数据结构,其中包含的不变性可以完全不需要考虑加锁操作
/*
* 1.ReadWriterLock : 读写锁
*
* 写写 /读写 需要 “互斥”
* 读读 不需要互斥
* */ public class TestReadWriteLock { public static void main(String[] args) {
//匿名内部类 使用外部的参数 需要加上 final (1.8之后就不需要了 ,但是也不能修改)
//这和外部参数的生命周期有关
final ReadWriteLockThread lt = new ReadWriteLockThread(); //创建一个 ‘写’ 线程
new Thread(new Runnable() {
@Override
public void run() {
lt.write(10);
}
},"write").start(); ////创建100个 ‘读’ 线程
for(int i = 0;i<100;i++) { new Thread(new Runnable() {
@Override
public void run() {
lt.read();
}
},"read").start();
}
}
}
class ReadWriteLockThread {
private int number = 1;
private ReadWriteLock lock = new ReentrantReadWriteLock(); public void read() {
lock.readLock().lock();
try {
System.out.println(number);
} finally {
lock.readLock().unlock();
} } public void write(int number) {
lock.writeLock().lock();
try {
System.out.println(this.number);
this.number = number;
} finally {
lock.writeLock().unlock();
}
}
}
最新文章
- checkbox和文本上下对齐
- FIO使用指南
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
- Linux命令:traceroute(windows中为tracert)
- c#高效的线程安全队列ConcurrentQueue<;T>;(上)
- Flash上传文件(结合asp.net)
- Hibernate的查询语言之HQL(二)——Hibernate查询的from字句
- [canvas]通过动态生成像素点做绚丽效果
- 花海漫步 NOI模拟题
- Java JVM 内存泄漏--全解析和处理办法 [ 转载 ]
- apktool给软件加注册机修改图标和文件名
- CUDA学习,使用shared memory实现Reverse Array
- C博客01——分支,顺序结构
- ibatis的queyrForList和queryForMap区别
- http协议基本原理
- 合成/聚合复用原则(Composite/Aggregate Reuse Principle, CARP)
- Jenkins参数化构建(三)之 Jenkins从文件中读取运行参数
- python三目运算符
- C Mysql API连接Mysql
- haproxy+keepalived配置haproxy反向代理的高可用
热门文章
- ES6深入浅出-2 新版函数:箭头函数 2 视频-1.视频 箭头函数
- Qt编写自定义控件46-树状导航栏
- Jmeter响应断言--正则表达式判断纯数字
- Java不写文件,LOAD DATA LOCAL INFILE大批量导入数据到MySQL的实现(转)
- 使用 ServiceStack.Text 序列化 json的实现代码
- 比较SSO协议: WS-Fed, SAML, and OAuth
- 第九章 JSP标签——《跟我学Shiro》
- 《CNCF &#215; Alibaba云原生技术公开课》知识点自测(三):Kubernetes核心概念
- MongoDB 谨防索引seek的效率问题(转)
- Win10利用CodeBlocks搭建Objective-C开发环境(二)