博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ReentrantLock的形象描述
阅读量:7078 次
发布时间:2019-06-28

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

本来是看ConcurrentHashMap的,但是里面用到了ReentrantLock。以前只知道这是可重入锁,但是具体啥意思不懂。今天看了许多文档,但是都是底层代码解析,一个线程获取锁,再次获取锁。我很纳闷为啥拿到了,还要再拿。直到看了可算清楚这是什么意思了。

  • 可重入:文中形象的把线程当做一个排队取水的人,取水规则允许此人的家人不排队直接取水,其他人取水就在后面排队形成排队队列。当他的家人来取水的时候就是相当于重入了,直接将正在取水人数+1,取完水对取水人数-1。直到取水人数为零时,排队在队列队头的人准备开始取水。
  • 公平和非公平:ReentrantLock实现了Lock接口,因此实现了其中的lock(),方法中调用了sync.lock();中还有一个是否为公平的参数,sync是在ReentrantLock的构造函数中实现的。其中fair参数的不同可实现公平锁和非公平锁。
  • 公平模式就是来人就要进行排队。
  • 非公平就是来人看看有人取水没,没人取水,看着队列头的人正准备取水呢,他直接跑过去抢了,结果他抢到了,队列头的人继续排队。(这种人好无理啊!就这个意思。)

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

你可能感兴趣的文章
SOP 1.6.0 发布,开放平台解决方案项目
查看>>
Java并发编程笔记之AbstractQueuedSynchronizer源码分析
查看>>
AI戒毒?没错,北京开始这么干了
查看>>
第178天:表单验证
查看>>
HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置
查看>>
数据库分离附加(附日记丢失的处理)
查看>>
开启HDR视觉盛宴:究竟什么视频算得上HDR?
查看>>
阿里云视频点播播放常见问题排查指南
查看>>
Java最全异常讲解
查看>>
Android保持屏幕常亮
查看>>
JS-DOM2级事件对象跨浏览器处理(已封装)
查看>>
用户名和密码校验程序
查看>>
浅析Java RTTI 和 反射的概念
查看>>
Django中用户权限模块
查看>>
Android TransitionDrawable:过渡动画Drawable
查看>>
keras实战项目——CIFAR-10 图像分类
查看>>
数据库变更管理
查看>>
隐私浏览器 Tor Browser 8.0.7 发布,安全更新版本
查看>>
Veeam发布2016年业绩: 同比增长28%,预订总收入达6.07亿美元
查看>>
慧荣科技发布全球首款商用SD 5.1控制器解决方案
查看>>