lock是乐观锁吗_Lock同步锁优化

上一次我们介绍了Synchronized的优化,除此之外在JDK1.5之后,也提供了另外一种锁Lock,今天我们就看看这个有什么优势

相比Synchronized,lock更加灵活,他的基本操作是通过乐观锁来实现的,但由于Lock锁也会在阻塞时候挂起,因此他依然属于悲观锁,他们之间的比较如下图

17be6ab7765636b773d8c6fb111300c8.png

Lock实现原理

Lock锁是基于java实现的锁,Lock是一个接口,常用的类有ReentrantLock,ReentrantReadWriteLock(RRW),他们都是依赖AQS实现 AQS类结构包含一个基于链表实现的CHL,用于存储阻塞的线程,AQS还有一个state变量,他是用来表示ReentrantLock表示加锁状态.

a9498a5740a38fc75ea5b4b6e270585c.png

锁分离优化lock同步锁

我们知道ReentrantLock是独占锁,他是同一时刻只能有一个线程获取到做,但是我们知道,对于同一份数据进行读写,如果一个线程在读数据,一个线程在写数据,会导致数据不一致,如果一个线程在写数据
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值