博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ReentrantReadWriteLock类和ReentrantLock类的区别
阅读量:5162 次
发布时间:2019-06-13

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

.util.concurrent.locks包定义了两个锁类,ReentrantLock和ReentrantReadWriteLock类。

当有很多线程都从某个中读取数据而很少有线程对其进行修改时,后者就很有用了。在这种情况下,允许读取器线程共享访问是合适的。当然,写入器线程依然必须是互斥访问的

下面是使用读/写锁的必要步骤:

(1) 创建一个ReentrantReadWriteLock对象

 

[java]   
 
  1. private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();  

 

(2)抽取读锁和写锁:

 

[java]   
 
  1. private Lock readLock = rwl.readLock();//得到一个可被多个读操作共用的读锁,但它会排斥所有写操作  
  2. private Lock writeLock = rwl.writeLock();//得到一个写锁,它会排斥所有其他的读操作和写操作  

 

(3) 对所有访问者加读锁

 

[java]   
 
  1. public double getTotalBalance(){  
  2.     readLock.lock();  
  3.     try{...};  
  4.     finally{readLock.unlock();}  
  5. }  

对所有修改者加写锁

 

 

[java]   
 
    1. public void transfer(){  
    2.     writeLock.lock();  
    3.     try{...};  
    4.     finally{writeLock.unlock();}  
    5. }  

转载于:https://www.cnblogs.com/ruiati/p/6125459.html

你可能感兴趣的文章
PAT天梯赛L3-005 垃圾箱分布
查看>>
Idea 创建控制台程序
查看>>
面向对象-类与对象
查看>>
后台弹出确认框(也就是调用js方法)
查看>>
(最小生成树)hdu 3371
查看>>
ASP.NET页面间数据传递的9种方法
查看>>
JT809 加密解密算法
查看>>
ILOG JRules 和 WebSphere Process Server 集成概述
查看>>
ExtJs4实战流量统计系统----流量数据展示(四)
查看>>
2017-2018-2 20165237 实验五《网络编程与安全》实验报告
查看>>
css颜色表示法及颜色表
查看>>
log4j.properties详细配置
查看>>
JVM之垃圾收集器
查看>>
Flex与.NET互操作(三):基于WebService的数据访问(下)
查看>>
C#导出Excel文件,过长数值显示为科学计数法解决方法 C#
查看>>
自动化谷歌浏览驱动
查看>>
[物理学与PDEs]第4章 反应流体力学
查看>>
MOSS 应用场景介绍
查看>>
2015年传智播客JavaEE 第168期就业班视频教程14-登录功能需求分析+模块结构命名规范...
查看>>
杂谈5
查看>>