Java 悲观锁 乐观锁

目录

一、悲观锁

1、悲观锁的代表synchronized和Lock锁

二、乐观锁

1、乐观锁的代表是AtomicInteger,使用cas来保证原子性


一、悲观锁

1、悲观锁的代表synchronized和Lock锁

(1)核心思想:线程只要占有了锁,才能操作共享变量,每次只要一个线程占锁成功,获取锁失败的线程,都得停下来等待。

(2)线程从运行到阻塞,再从阻塞到唤醒,涉及线程上下文切换,如果频繁发生,影响性能。

(3)实际上,线程在获取syncronized和Lock锁之前,如果锁已经被占用,都会做好几次重复操作,减少阻塞的机会。

二、乐观锁

1、乐观锁的代表是AtomicInteger,使用cas来保证原子性

(1)核心思想: 无需加锁,每次只要一个线程能成功修改共享变量,其他失败的进程不需要停止,不断重试直至成功。

(2)由于线程一直运行,不需要阻塞,因此不涉及线程上下文切换

(3)它需要多核cpu支持,且线程数不应该超过cpu核数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值