首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
蕾姆是我女神
2018-11-23 18:45
已编辑
青州街男子职业技术学院 Java
关注
已关注
取消关注
忽然想不通了,Java里的读写锁里的读锁有什么用?
ReentrantReadWriteLock里的readLock有什么用?
看百度上有个人说这样能让多线程不阻塞进入临界区,
可是不加锁的话多线程不是都可以访问临界区吗?
如果阻塞的话怎么会出现线程安全问题……
求大佬指点迷津,加读锁和不加读锁有啥区别。
提示
全部评论
推荐
最新
楼层
Albertnet
中国移动_PaaS产品部_软件开发工程师
读-写锁 (1)读写锁的出现原因: ReentrantLock实现一种标准的互斥锁,每次最多只有一个线程能持有ReentrantLock,限制了并发性,互斥是一种保守的加锁策略,虽然避免了“写/写”冲突和“写/读”冲突,但也避免了“读/读”冲突,而大部分情况下读操作比较多,如果此时能够放宽加锁需求,允许多个读操作的线程同时访问数据结构,可以提升程序的性能(只要每个线程保证读取到最新的数据,并且在读取数据时不会有其他线程修改数据就行) (2)ReentrantLock提供的非互斥的读写锁的定义 1)一个资源可以被多个读操作访问,或者被一个写操作访问,但两者不能读写操作同时进行。2)读-写锁是一种性能优化措施,可以实现更高的并发性,提高程序的性能。3)当锁的持有时间较长并且大部分操作都不会修改被守护的资源时,读-写锁可以提高并发性。
2
回复
分享
发布于 2017-09-03 08:02
JasWag
山东工商学院 Java
总的来说 读写互斥和读锁共享,再来说场景 单/多线程 1、单线程:锁可重入(多个读或多个写) 2、多线程:当前线程读阻塞其他线程写,当前线程写阻塞其他线程读写
1
回复
分享
发布于 2021-11-28 17:38
吃口屎冷静下
Java
读读不互斥,读写互斥,写写互斥
4
回复
分享
发布于 2017-09-02 22:40
March..
Санкт-Петербургский государственный университет информационных технологий, механики и оптики Java
防止读的时候其他线程写,允许读的时候其他线程读
3
回复
分享
发布于 2017-09-02 22:35
驼君
北京工业大学 Java
加读锁应该是防止在写入的时候读取,防止读取脏数据
2
回复
分享
发布于 2020-03-10 17:18
厨师沙拉.
重庆大学 后端工程师
刚学到这里,回复下自己的看法。因为读写锁锁住的不是共享资源,而是临界区,临界区里是对共享资源的操作,读写锁能控制多线程里的临界区对于共享资源访问的动作,但是不能控制共享资源不被别人访问。没有在锁住的临界区内的其它的线程依旧可以访问共享资源。所以如果不加读锁就会导致写的时候,共享资源被读。有此类问题的朋友可以试着写一下代码跑一下看看。
点赞
回复
分享
发布于 2022-02-16 22:54
牛客520318129号
加读锁,保证可重复读。 加写锁,自己写,也阻塞别人读,因为数据正在改动。
点赞
回复
分享
发布于 2020-12-04 23:00
雪刚
西北工业大学 Java
关键理解是同一锁对象 :用同一个锁对象, 在加了写锁的代码块执行期间,能阻塞 对该锁对象加写锁,当然也阻塞了写锁加锁和解锁之间的代码块的执行。
点赞
回复
分享
发布于 2018-11-23 18:28
等待offer
广东 Java
请求读锁的线程进去之后,其他请求读锁线程可以继续进入。但此时,请求写锁的线程不能进入,会被阻塞,直到所有请求读锁的线程结束之后,才有可能进入。
点赞
回复
分享
发布于 2017-09-03 07:43
Thare
淘天集团_技术专家
读锁:共享锁 写锁:排它锁
点赞
回复
分享
发布于 2017-09-03 02:00
浮生一梦暗若痴
老和山职业技术学院 C++
等你用到的时候就理解了
点赞
回复
分享
发布于 2017-09-03 01:26
都拿我当备胎
蓝翔技校 Java
h_b吧
点赞
回复
分享
发布于 2017-09-03 00:04
向宇前桌
查硕 Java
处理高并发
点赞
回复
分享
发布于 2017-09-02 23:57
见习精神病
天津财经大学 Java
加了读锁别的线程如果要加写锁就阻塞了呀
点赞
回复
分享
发布于 2017-09-02 22:42
暂无评论,快来抢首评~
相关推荐
今天 12:21
西南财经大学 运营
求大佬看看简历
这个简历能当大厂牛马吗?
实习生至暗时刻
点赞
评论
收藏
分享
02-28 13:06
浙江大学 算法工程师
顺丰C++开发 二面 面经
1. 介绍一下你最有挑战性的项目,重点说说技术架构和你解决的核心问题回答框架:项目背景和规模(用户量、数据量、QPS)整体架构设计(画图说明)遇到的技术难点(性能、并发、一致性)解决方案和优化措施最终效果(性能提升、成本降低)2. 线上服务突然CPU飙升到100%,你会如何快速定位问题答案:定位步骤:top命令找到占用高的进程PIDtop -H -p <PID>查看线程级CPU占用,找到问题线程TID将TID转为16进制:printf "%x\n" <TID>查看线程堆栈: C++程序:pstack <PID> 或 gdb attach ...
C++八股文全集
点赞
评论
收藏
分享
02-27 12:37
上海大学 人工智能
字节ai后端要去面吗
boss上投了一天就有hr约面试时间了,但感觉方向上不完全符合,没有后端知识怕面评不好,目前没有中大厂面试经历,是不是还是先投投比较符合的岗位面试压力会小点
开工第一帖
点赞
评论
收藏
分享
02-19 16:22
河南师范大学 Java
双非27届找实习,希望大佬锐评一下
点赞
评论
收藏
分享
今天 09:35
清华大学 Java
java大厂面经速览
一、Java基础重点内容面向对象:封装、继承、多态equals 与 hashCodeString、StringBuilder、StringBuffer重载 vs 重写深拷贝 vs 浅拷贝准备方法熟悉核心语法和设计思想能解释常见面试题原理配合刷经典基础题二、集合框架重点内容List:ArrayList、LinkedListMap:HashMap、ConcurrentHashMapSet:HashSet、TreeSet高频考察HashMap 底层结构扩容机制hash 冲突解决JDK7 与 JDK8 实现区别准备方法理解底层数据结构能说清 put / get 过程理解不同集合使用场景三、并发编程重点...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
15
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
简历上的AI项目,面试官到底想看什么?
3.3W
2
...
AI岗面试必问,附上我的回答思路
1.1W
3
...
字节国际化广告二面凉经
4124
4
...
字节java后端开发实习凉经
4036
5
...
我做过的,被面试官夸爆的那些Ai项目(二)
3433
6
...
春招冲刺季|求职交流群正式启动!发帖赚现金,抱团拿offer!
3250
7
...
面试官视角聊聊:小龙虾OpenClaw如何0基础上手?
2986
8
...
AI面试相关之RAG与Doris(JAVA)
2962
9
...
京东一面面经
2550
10
...
腾讯后端一面
2516
创作者周榜
更多
正在热议
更多
#
交出你的校招焚诀
#
7759次浏览
139人参与
#
27届求职交流
#
528次浏览
32人参与
#
神州信息求职进展汇总
#
2994次浏览
60人参与
#
实习生至暗时刻
#
14446次浏览
278人参与
#
26届求职交流
#
428次浏览
24人参与
#
面试___岗的必刷题单
#
9441次浏览
164人参与
#
米哈游求职进展汇总
#
580414次浏览
2989人参与
#
实习想申请秋招offer,能不能argue薪资
#
223426次浏览
1184人参与
#
哪些公司开暑期实习了?
#
13597次浏览
119人参与
#
你经历过哪些AI幻觉?
#
4011次浏览
101人参与
#
春招开局,你有保底offer吗?
#
20092次浏览
183人参与
#
AI面试问题分享
#
10495次浏览
205人参与
#
三月的小目标
#
7387次浏览
136人参与
#
十一月总结
#
82692次浏览
428人参与
#
实习生的生存小技巧
#
5555次浏览
97人参与
#
字节开奖
#
129805次浏览
598人参与
#
找AI工作应该卷什么?
#
2641次浏览
53人参与
#
我的第一份实习怎么找的
#
235683次浏览
1963人参与
#
小厂一定不能去吗?
#
20485次浏览
154人参与
#
快手工作体验
#
309428次浏览
2908人参与
#
机械人春招想让哪家公司来捞你?
#
387325次浏览
3160人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务