首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
03-23 11:45
门头沟学院 Java
@Autowired与@Resource有什么区别
ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花在Spring依赖注入场景中,@Autowired和@Resource是最常用的自动装配注解,二者功能相似但底层逻辑、设计规范、使用规则差异极大,直接决定了装配成功率和代码兼容性。以下从核心维度逐一拆解区别:一、基础归属:规范来源不同@Autowired:Spring框架专属注解,来源于org.springframework.beans.factory.annotation.Autowired,仅在Spring容器中生效,脱离Spring环境无法使用。@Resource:Ja...
Spring
点赞
评论
收藏
分享
04-02 17:22
新疆大学 Java
第二次 美团一面
1. 你在这个物流平台项目中扮演的角色是什么?主要负责后端的哪一部分?2. 能简单介绍一下你负责的核心模块(货单大厅)的业务流程吗?3. 货单大厅里高频使用的多条件组合查询,你后端的存储用的是什么?4. 这个查询对应的数据量有多大?5. 除了 MySQL,你有考虑过用别的存储引擎做这种多条件检索吗?有没有必要?如果要换,应该用什么来做?6. 简历上写了 SQL 优化,整个问题是怎么发现,然后怎么解决的?7. 什么是回表?8. 你用 EXPLAIN 发现查询慢,具体是因为没有用索引,还是索引没用对?9. 联合索引的“最左匹配原则”知道吗?具体是什么意思?10. “迷你豆包”这个项目是干什么用的?主要是出于什么考虑要做这个项目?11. 能简单介绍一下这个项目中你觉得比较感兴趣的技术点吗?12. 进程和线程的区别是什么?13. 进程的上下文切换和线程的上下文切换是怎么做的?包含了哪些步骤?14. 什么是虚拟内存?使用虚拟内存有什么好处?15. 缺页中断(Page Fault)是什么意思?16. 操作系统里面有哪些锁?(或 Java 里面有哪些锁?)17. 如果 synchronized 和 ReentrantLock(可重入锁)两个选的话,优先选哪个?为什么?18. 正常情况下(单体服务中),默认应该优先选哪个锁?19. 知道 BIO、NIO、AIO 吗?BIO 的“同步阻塞”是什么意思?20. 简单介绍一下 TCP 的三次握手和四次挥手过程。21. 为什么 TCP 建立连接需要三次握手?22. TIME_WAIT 状态出现在四次挥手的什么时候?23. TIME_WAIT 状态会持续多长时间?24. HTTP 状态码 404(找不到页面)代表什么?这是服务端的问题还是客户端的问题?25. HTTP 状态码 504 一般出现在什么情况下?26. 在浏览器里面输入一个网址,到页面最终展示出来,这中间经历了怎样的过程?27. 什么是 TCP 的粘包和拆包?28. 怎么解决粘包和拆包的问题?29. MySQL InnoDB 引擎的索引使用的是什么树结构?B+树和B树的区别是什么?30. 为什么 MySQL 采用 B+树,而不用红黑树?31. 听说过幻读吗?解释一下什么是幻读。32. 怎么解决幻读问题?33. 幻读在什么隔离级别下可以解决?34. 一般怎么解决 Redis 缓存与 MySQL 数据库的缓存一致性问题?35. JVM 的内存模型(运行时数据区)包括哪些部分?36. 字符串(String)和数字在 JVM 中分别存放在哪里?37. 垃圾回收(GC)算法有哪些?38. CMS 和 G1 垃圾回收器的区别是什么?它们分别应对什么场景?39. 为什么到了 JDK 1.8 之后开始主流推荐使用 G1?CMS 有什么缺点?40. 相比之下,CMS 和 G1 谁的 GC 停顿时间会更长?为什么?41. HashMap 和 ConcurrentHashMap 的区别是什么?42. ConcurrentHashMap 是怎么做到线程安全的?43. 简单介绍一下 Spring 的控制反转(IOC)和面向切面编程(AOP)。44. AOP 的核心底层是使用什么机制实现的?45. 我们平时写个注解就能生效,注解的基本原理是什么?它为什么能把逻辑织入到代码运行路径中?46. 你平时是怎么使用 AI 辅助开发的?你的项目代码是直接用 AI 写的吗?47. RAG(检索增强生成)的一个完整运行流程是怎样的?48. 为什么要做 RAG 这个东西?它解决了什么问题?49. Token 和上下文窗口(Context Window)的概念分别是什么意思?50. 为什么要控制 Token 的数量?51. 大模型的“幻觉”是什么意思?是怎么产生的?
面试问题记录
点赞
评论
收藏
分享
04-05 20:07
四川大学 Java
好久不见,神哥归来❤️
一年多没来牛客了甚至已经忘记怎么发帖了😖工作之后变忙了好多有成长,有痛苦,有欢乐,有难受同事们都很优秀,确实学习到了很多知识牛友们确实帮助了我很多很多定期回来回复一下大家的问题,希望能帮助到大家祝大家求职顺利,天天开心
分享一个让你热爱工作的瞬...
点赞
评论
收藏
分享
03-31 21:10
已编辑
南京邮电大学 Java
27美团暑期实习一面面经
1. 自我介绍2. 项目拷打(穿插八股)1. rpc服务节点挂了怎么处理的2. 拼团跟aigent怎么结合3. 做的时候有什么困难,怎么解决的3. 八股1. 进程跟线程的区别2. java多线程并发创建对象的时候,怎么保证在堆中不冲突(TLAB)3. 介绍死锁4. ioc跟aop5. mysql为什么选择用b+tree做索引6. 如果索引不是主键而是查一个二级索引呢4. 手撕:数组中的第K个最大元素5. 反问1. 部门业务范围2. 建议
查看13道真题和解析
点赞
评论
收藏
分享
03-31 22:41
郑州轻工业大学 Java
27届双非现在最优解是什么??
因为一方面自己学历,自己能力还不足以达到大厂暑期拿offer的水平,同时投一周大厂简历挂了一圈……更别提面试机会了。所以现在最该落在自己身上的应该是自我沉淀。有一段实习经历,准备去找互联网中小厂的实习。一方面如果进了可以在实习中提升自己的技能,另一方面实习期间大概三个月左右,这么长的时间绝对是可以好好沉淀自己的算法能力,简历上的项目吃透,还有八股文和场景题目之类的……而且结束之后简历上又多了一个实习经历。自我感觉应该比较可以。但是这样等于说是放弃了更好的互联网大厂的暑期实习HC以及他们的一套人才培养计划。但是这些对于现在能力有所欠缺,还没有面试机会,还是双非的我,我也不敢奢求。感觉无论怎么样,始终都是要靠自己,自我要规划好。完毕……各位大佬们,也可以留下评价交流。
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
15
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
厦门银行AI面试面经
6876
2
...
感谢腾讯!双非本暑期成功上岸💪
3006
3
...
快手Java日常实习一面
2492
4
...
网易客户端实际等待开奖
2133
5
...
字节AI应用开发一面拷打1h🤯
2062
6
...
腾讯云智415暑期一面纯八股!
2001
7
...
因为不主动加班被裁了
1894
8
...
面试官角度谈谈还要刷力扣吗
1747
9
...
4.16 滴滴一面
1719
10
...
招银网络一面
1465
创作者周榜
更多
正在热议
更多
#
AI时代还有必要刷leetcode吗?
#
33862次浏览
431人参与
#
大学生该如何认清当下的就业环境?
#
162200次浏览
886人参与
#
有哪些公司在面试时考察AICoding?
#
18948次浏览
347人参与
#
运营来爆料
#
98774次浏览
508人参与
#
HR面都在聊什么?
#
13438次浏览
162人参与
#
美团开奖
#
407694次浏览
1805人参与
#
26届春招投递记录
#
3569次浏览
42人参与
#
百度工作体验
#
325334次浏览
2247人参与
#
想从事Agent应该学习哪些技术?
#
8286次浏览
279人参与
#
实习学到最有价值的工作习惯
#
69584次浏览
551人参与
#
OPPO求职进展汇总
#
808923次浏览
5441人参与
#
校招生月薪1W算什么水平
#
143366次浏览
492人参与
#
你觉得什么岗位会被AI替代
#
57160次浏览
371人参与
#
从投递到OC,你用了多久
#
23443次浏览
238人参与
#
什么人最适合大厂?
#
12540次浏览
133人参与
#
父母问你工作找得怎么样,怎么回
#
22768次浏览
282人参与
#
哪些公司面试还在问八股?
#
13795次浏览
123人参与
#
许愿池
#
373807次浏览
2921人参与
#
我与AI的日常
#
3257次浏览
16人参与
#
我的求职进度条
#
1111480次浏览
8034人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务