Java各种锁关系简述

4 篇文章 0 订阅

Java各种锁关系简述


乐观锁和悲观锁是锁的总体实现的思想层面概念:
乐观锁:就是乐观思想,即认为读多,每次读取数据不会加锁,只有在更新数据的时候会加锁,再进行更新,常见的实现方式(版本号控制,cas算法,共享锁等)
悲观锁:就是悲观思想,即认为写多,每次读写数据前先加锁,再进行读写,常见悲观锁:synchronized和ReentrantLock等独占锁

自旋锁:是一种锁竞争机制,比如在悲观锁里,需要获取的时候是否使用自旋锁的方式竞争还是阻塞式

Synchronized 同步锁,属于独占式的悲观锁,Synchronized 锁机制会根据线程竞争情况在运行会有偏向锁、轻量锁、重量锁

可重入锁(递归锁),广义上的可重入锁,,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在 JAVA 环境下 ReentrantLock 和 synchronized 都是 可重入锁。

公平锁与非公平锁,是指一种锁竞争的策略:
公平锁(Fair)
加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得
非公平锁(Nonfair)
加锁时不考虑排队等待问题,直接尝试获取锁,获取不到自动到队尾等待

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值