java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板 写锁降级为读锁
来源:互联网 发布:阿里云快照欠费 编辑:程序博客网 时间:2024/06/06 00:43
写锁降级为读锁,但读锁不可升级或降级为写锁。
锁降级是为了让当前线程感知到数据的变化。
1 //读写锁 2 private ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); 3 //读锁 4 private ReadLock readLock=lock.readLock(); 5 //写锁 6 private WriteLock writeLock=lock.writeLock(); 7 private boolean update; 8 9 public void processData(){10 //读锁获取11 readLock.lock();12 13 if(!update){14 //必须先释放读锁15 readLock.unlock();16 17 //锁降级从获取写锁开始18 writeLock.lock();19 try {20 if(!update){21 //准备数据流程(略)22 update=true;23 }24 //获取读锁。在写锁持有期间获取读锁25 //此处获取读锁,是为了防止,当释放写锁后,又有一个线程T获取锁,对数据进行改变,而当前线程下面对改变的数据无法感知。26 //如果获取了读锁,则线程T则被阻塞,直到当前线程释放了读锁,那个T线程才有可能获取写锁。27 readLock.lock();28 }finally{29 //释放写锁30 writeLock.unlock();31 }32 //锁降级完成33 }34 35 try {36 //使用数据的流程37 } finally{38 //释放读锁39 readLock.unlock();40 }41 42 }
阅读全文
0 0
- java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板 写锁降级为读锁
- 读写锁ReentrantReadWriteLock锁降级
- java多线程:ReentrantReadWriteLock读写锁的使用
- 【Java并发】- ReentrantReadWriteLock,读写锁原理
- 读写锁之——锁降级
- Java多线程探究-读写锁ReentrantReadWriteLock
- Java多线程读写锁ReentrantReadWriteLock原理详解
- [java并发]读写锁ReentrantReadWriteLock里面的FairSync 和 NonfairSync
- JDK读写锁ReadWriteLock的升级和降级问题
- concurrent包读写锁ReentrantReadWriteLock的使用
- JAVA多线程-Lock的使用(四)-读写锁ReentrantReadWriteLock
- Java多线程编程4--ReentrantReadWriteLock的使用(读写锁)
- 多线程Demo-ReentrantReadWriteLock读写锁
- 多线程之读写锁ReentrantReadWriteLock
- 重入、降级锁
- 深入浅出Java并发包—读写锁ReentrantReadWriteLock原理分析(二)
- 深入浅出Java并发包—读写锁ReentrantReadWriteLock原理分析(一)
- java并发锁ReentrantReadWriteLock读写锁源码分析
- myTomcat简单的实现
- 解不定方程
- 初始学习python
- ViewBag在网页上的使用
- 四位随机数
- java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板 写锁降级为读锁
- Java类集
- 使用sklearn 实现 Logistics Regression 分类
- 这几个动图告诉你科学的神奇,看完瞬间觉得智商都提高了
- android Log详解
- 关于在两个jsp页面之间传递值的问题
- js延时触发
- [读书总结]-《哪有没时间这回事》
- C#调用DLL复杂函数结构体