首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
蕾姆是我女神
2018-11-23 18:45
已编辑
Java
关注
已关注
取消关注
忽然想不通了,Java里的读写锁里的读锁有什么用?
ReentrantReadWriteLock里的readLock有什么用?
看百度上有个人说这样能让多线程不阻塞进入临界区,
可是不加锁的话多线程不是都可以访问临界区吗?
如果阻塞的话怎么会出现线程安全问题……
求大佬指点迷津,加读锁和不加读锁有啥区别。
提示
全部评论
推荐
最新
楼层
吃口屎冷静下
Java
读读不互斥,读写互斥,写写互斥
3
送花
回复
分享
发布于 2017-09-02 22:40
March..
Java
防止读的时候其他线程写,允许读的时候其他线程读
2
送花
回复
分享
发布于 2017-09-02 22:35
滴滴
校招火热招聘中
官网直投
Albertnet
中国移动_PaaS产品部_软件开发工程师
读-写锁 (1)读写锁的出现原因: ReentrantLock实现一种标准的互斥锁,每次最多只有一个线程能持有ReentrantLock,限制了并发性,互斥是一种保守的加锁策略,虽然避免了“写/写”冲突和“写/读”冲突,但也避免了“读/读”冲突,而大部分情况下读操作比较多,如果此时能够放宽加锁需求,允许多个读操作的线程同时访问数据结构,可以提升程序的性能(只要每个线程保证读取到最新的数据,并且在读取数据时不会有其他线程修改数据就行) (2)ReentrantLock提供的非互斥的读写锁的定义 1)一个资源可以被多个读操作访问,或者被一个写操作访问,但两者不能读写操作同时进行。2)读-写锁是一种性能优化措施,可以实现更高的并发性,提高程序的性能。3)当锁的持有时间较长并且大部分操作都不会修改被守护的资源时,读-写锁可以提高并发性。
2
送花
回复
分享
发布于 2017-09-03 08:02
驼君
北京工业大学 电子信息类
加读锁应该是防止在写入的时候读取,防止读取脏数据
1
送花
回复
分享
发布于 2020-03-10 17:18
JasWag
Java
总的来说 读写互斥和读锁共享,再来说场景 单/多线程 1、单线程:锁可重入(多个读或多个写) 2、多线程:当前线程读阻塞其他线程写,当前线程写阻塞其他线程读写
1
送花
回复
分享
发布于 2021-11-28 17:38
见习精神病
Java
加了读锁别的线程如果要加写锁就阻塞了呀
点赞
送花
回复
分享
发布于 2017-09-02 22:42
向宇前桌
Java
处理高并发
点赞
送花
回复
分享
发布于 2017-09-02 23:57
都拿我当备胎
Java
h_b吧
点赞
送花
回复
分享
发布于 2017-09-03 00:04
浮生一梦暗若痴
C++
等你用到的时候就理解了
点赞
送花
回复
分享
发布于 2017-09-03 01:26
Thare
淘天集团_技术专家
读锁:共享锁 写锁:排它锁
点赞
送花
回复
分享
发布于 2017-09-03 02:00
等待offer
Java
请求读锁的线程进去之后,其他请求读锁线程可以继续进入。但此时,请求写锁的线程不能进入,会被阻塞,直到所有请求读锁的线程结束之后,才有可能进入。
点赞
送花
回复
分享
发布于 2017-09-03 07:43
雪刚
Java
关键理解是同一锁对象 :用同一个锁对象, 在加了写锁的代码块执行期间,能阻塞 对该锁对象加写锁,当然也阻塞了写锁加锁和解锁之间的代码块的执行。
点赞
送花
回复
分享
发布于 2018-11-23 18:28
牛客520318129号
加读锁,保证可重复读。 加写锁,自己写,也阻塞别人读,因为数据正在改动。
点赞
送花
回复
分享
发布于 2020-12-04 23:00
厨师沙拉.
后端
刚学到这里,回复下自己的看法。因为读写锁锁住的不是共享资源,而是临界区,临界区里是对共享资源的操作,读写锁能控制多线程里的临界区对于共享资源访问的动作,但是不能控制共享资源不被别人访问。没有在锁住的临界区内的其它的线程依旧可以访问共享资源。所以如果不加读锁就会导致写的时候,共享资源被读。有此类问题的朋友可以试着写一下代码跑一下看看。
点赞
送花
回复
分享
发布于 2022-02-16 22:54
滴滴
校招火热招聘中
官网直投
相关推荐
犬粟
昨天 19:00
华中科技大学 计算机类
5.14 字节后端三面挂
搜索团队 45分钟,开始进来三个面试官汗流浃背了已经,还好只有一个面试官开摄像头讲话 主要聊项目 c++ 几种const指针的区别 给一段代码讲有哪些问题 最新学的技术是什么 平常有没有用脚本语言 手撕:比较版本号,用python写 全程很正常交流也没有刁钻问题,还以为终于要找到实习了,第二天挂了,真的难受想哭,礼貌问了hr原因,表示不方便透露 ...
软件开发2024笔面经
点赞
评论
收藏
转发
鼠鼠不想学爪哇
05-13 20:15
已编辑
中国科学技术大学 计算机类
字节抖音电商后端日常实习一二三面已oc
一面(50min): 自我介绍 项目(20分钟) RocketMQ延时消息(项目用到了)底层怎么实现的(不会) 消息量太大导致读消息延迟时间很长怎么办 项目还有啥优化 讲一讲redis redis为什么快(说了内存、数据结构优化、单线程不用考虑线程安全、io多路复用) 单线程模型有什么缺点,有什么不太适用的场景 redis的大key问题,为什么会产生大key redis怎么设置过期时间,底层是怎么实现的,有哪些过期删除策略 普通索引、(a b c)联合索引,如果只通过b等值查询能走索引吗,如果用a和c呢 ...
软件开发2024笔面经
点赞
评论
收藏
转发
生产队大队长
昨天 19:59
哈尔滨工业大学 仪器类
大家帮忙看看简历可以怎么改改?
点赞
评论
收藏
转发
Kred_dawlish
05-09 11:29
哈尔滨工业大学 计算机类
研一不想从事写代码的工作,鼠鼠还能去哪?
rt,鼠鼠今年研一,本硕都是安全方向(本传统网安,硕AI.安全,暂无小论文),代码能力自认垃圾,估计以后也不会去卷码农这条赛道,佬们快救救孩子吧已考虑考公和混博士读,信息差和学生思维,其他的还想不到
我的求职思考
互联网没坑了,还能去哪里?
点赞
评论
收藏
转发
点赞
15
评论
分享
回复帖子
全站热榜
1
...
瑞幸java校招二面(史诗级80min)
8129
2
...
送花给牛友,不做“白嫖党”!牛客互动新功能上线啦!
7481
3
...
CS硕 只看40w+且965 能投啥
6833
4
...
5.16校招&实习招聘信息汇总
5189
5
...
【进面核心】如何紧盯个人简历与企业需求的契合度
4945
6
...
腾讯 后台开发 一面
4442
7
...
阿里oc
4442
8
...
许愿滴滴秋储OC,最后一个大厂了
3910
9
...
滴滴秋储后端(秒挂)
3895
10
...
快手二面g
3193
正在热议
#
牛客帮帮团来啦!有问必答
#
726608次浏览
11690人参与
#
海康威视求职进展汇总
#
91292次浏览
1091人参与
#
浅聊一下我实习的辛苦费
#
81428次浏览
761人参与
#
非技术岗是怎么找实习的
#
74518次浏览
1392人参与
#
如何写一份好简历
#
262526次浏览
3962人参与
#
硬件人求职现状
#
184607次浏览
2705人参与
#
通信硬件人笔面经互助
#
111231次浏览
2234人参与
#
机械制造面试记录
#
37557次浏览
505人参与
#
24届营销人拿到了几个offer
#
4226次浏览
62人参与
#
铜五铁六真的存在吗?
#
28175次浏览
298人参与
#
打工人的辛酸
#
8595次浏览
134人参与
#
实习生应该准时下班吗
#
76653次浏览
569人参与
#
美的求职进展汇总
#
38844次浏览
417人参与
#
产品实习,你更倾向大公司or小公司
#
36362次浏览
556人参与
#
数据人offer决赛圈怎么选
#
44729次浏览
727人参与
#
实习与准备秋招该如何平衡
#
171541次浏览
3105人参与
#
投了多少份简历才上岸
#
57344次浏览
951人参与
#
通信硬件薪资爆料
#
200107次浏览
1813人参与
#
面试中的破防瞬间
#
83368次浏览
1029人参与
#
找工作,你会甘心进小厂还是猛冲大厂
#
35572次浏览
355人参与
牛客网
牛客企业服务