读为什么要加锁?

开拓者Amadues 2021-08-05 16:27:40

看了共享锁和独占锁(排它锁)的定义

第 3 种分类标准是共享锁和独占锁。共享锁指的是我们同一把锁可以被多个线程同时获得,而独占锁指的就是,这把锁只能同时被一个线程获得。我们的读写锁,就最好地诠释了共享锁和独占锁的理念。读写锁中的读锁,是共享锁,而写锁是独占锁。读锁可以被同时读,可以同时被多个线程持有,而写锁最多只能同时被一个线程持有。
 

有点不理解读的场合为什么需要加锁,这把锁可以派什么用处?

...全文
1249 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
=PNZ=BeijingL 2021-08-06
  • 打赏
  • 举报
回复

读写可能同时进行, 读写锁是为了读的时候不让写

开拓者Amadues 2021-08-06
  • 举报
回复
@=PNZ=BeijingL 原来如此,我本来以为读和写的时候分别加锁的
=PNZ=BeijingL 2021-08-06
  • 举报
回复
@开拓者Amadues 你可以看下ReentrantReadWriteLock源码
编号灬9527 2021-08-06
  • 打赏
  • 举报
回复

读锁是为了不让你写

阿豆响当当 2021-08-06
  • 打赏
  • 举报
回复

你可以把读写锁看做是共享资源的管理器, 读读 并行 , 读写 读会阻塞

开拓者Amadues 2021-08-05
  • 打赏
  • 举报
回复
读操作本来就没有线程不安全的问题,为什么还要加锁呢
qq_39936465 2021-08-06
  • 举报
回复 1
@开拓者Amadues 因为读和写同时进行,读不加锁很有可能获得的是旧数据,这样就会产生问题。
今日0℃ 2021-08-05
  • 打赏
  • 举报
回复

这个可以结合事务隔离级别去分析

开拓者Amadues 2021-08-05
  • 举报
回复
@今日0℃ 读跟事务没什么关系吧,最多就是脏读,但是读的时候被改了也是正常可以接受的情况

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧