博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Todo】【转载】Java中的锁机制2 - Lock
阅读量:7124 次
发布时间:2019-06-28

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

参考这篇文章

 

上一篇 () 介绍了synchronized方法。

本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。

在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。

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

另:ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。

 

ReentrantReadWriteLock 相关代码片段如下:

private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();  private Lock readLock = rwl.readLock();//得到一个可被多个读操作共用的读锁,但它会排斥所有写操作  private Lock writeLock = rwl.writeLock();//得到一个写锁,它会排斥所有其他的读操作和写操作  // 对所有访问者加读锁public double getTotalBalance(){      readLock.lock();      try{...};      finally{readLock.unlock();}  }  // 对所有修改者加写锁public void transfer(){      writeLock.lock();      try{...};      finally{writeLock.unlock();}  }

 

转载于:https://www.cnblogs.com/charlesblc/p/5996255.html

你可能感兴趣的文章
Linux -数据库连接,且更改数据库密码
查看>>
一步步教你创建自己的数字货币(代币)进行ICO
查看>>
centos7安装nginx
查看>>
go 错误处理panic recover
查看>>
如何准备阿里技术面试?终面官现身说法!
查看>>
人工智能与大数据专业一体化解决方案
查看>>
通过面试题,让我们来了解Collection
查看>>
sass笔记-3|Sass基础语法之样式复用和保持简洁
查看>>
实现注册邮箱验证和登陆验证码
查看>>
RAID(磁盘阵列)使用
查看>>
Linux将文件夹及其所有子文件的读写权限赋给所有用户
查看>>
思科路由器实现出差员工访问公司内部网络远程访问***—Easy ***
查看>>
global2.min.css 公用样式2.0版本
查看>>
探索React生态圈
查看>>
远程唤醒
查看>>
关于怎么查出数据库的值一系列的方法
查看>>
web前端研发工程师编程能力成长之路 [转]
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Linux 系统参数修改命令sysctl
查看>>