解释一下八大锁

本文探讨了悲观锁与乐观锁的概念,强调了synchronized在悲观锁中的应用,并介绍了自旋锁作为乐观锁的一种实现,包括ABA问题的解决方案。同时,讨论了读写锁、排他锁和共享锁在并发控制中的作用,以及分段锁在大规模数据并发插入场景中的优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

悲观锁: 一定会有并发发生,先提前预防
乐观锁:  不一定会发生并发,真的有并发的话再做处理
synchronized(x.class)就是悲观锁
自旋锁:不需要上锁,每次在做叠加的时候进行检查,直到检查没有发生变化后就不在循环

自旋锁:一种常见的乐观锁的实现
  ABA问题:加版本(version  boolean):如果发现版本号不一样,具体问题具体分析(try...catch,
  做回滚,查看日志)
  保障CAS操作的原子性问题(lock指令)

通过版本号解决ABA问题:

通过Boolean类型解决ABA问题:

读写锁,排他锁,共享锁
排他锁:只有一个线程能访问代码
共享锁:可以允许多个线程访问代码
读写锁:
     -读锁:读的时候,不允许写,但是允许同步读
     -写锁:写的时候,不允许写,也不允许读(写的时候不允许读,避免脏读状态)

 共享锁的实现方式(信号量): 

 统一锁、分段锁

分段锁:比如说链表进行并发插入这时候,链表数据非常大。这时候可以将链表分为一段一段的,插入的
时候锁定段即可。数据库插入的时候 找到对应的段 然后做插入。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值