解释一下八大锁

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

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

通过版本号解决ABA问题:

通过Boolean类型解决ABA问题:

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

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

 统一锁、分段锁

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值