博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的锁之乐观锁与悲观锁
阅读量:6656 次
发布时间:2019-06-25

本文共 581 字,大约阅读时间需要 1 分钟。

1、 分类一:乐观锁与悲观锁

  a)悲观锁:认为其他线程会干扰本身线程操作,所以加锁

i.具体表现形式:synchronized关键字和lock实现类复制代码

  b)乐观锁:认为没有其他线程会影响本身线程操作,所以不加锁

i.具体表现形式:java的原子类的递增操作                   ii.原理:采用cas算法复制代码

  c)Cas算法:交换与比较

i.涉及三个数:需要读写的内存值V,进行比较的值A,要写入的新值B                   ii.具体操作:若A=V,就用B更新V,否则不进行任何操作                  iii.会用ABA问题:cas算法需要判断内存值V是否发生变化,如果a值变成b值然后又变回a值,cas算法就会无法判断,产生错误。解决上问题:在变量前添加版本号,将aba变成1a2b3c                   iv.循环时间长开销大,因为自旋需要消耗cpu                    v.只能保证一个共享变量的原子操作复制代码

2、 分类二

  a) 重入锁:支持重进入的锁,排它锁

3、 分类三

  a)读写锁:一对锁,读锁,写锁,在同一时刻允许多线程访问

转载于:https://juejin.im/post/5c1b85256fb9a049f43b47fa

你可能感兴趣的文章
linux网卡
查看>>
我的敏捷个人“高效”工作总结
查看>>
Linux操作系统中的七件超厉害的武器
查看>>
Linux安装配置varnish web加速器
查看>>
RS复习之:二层技术----以太网
查看>>
都市白领保健必需的营养盘点
查看>>
Oracle创建表空间、创建用户以及授权、查看权限
查看>>
博客内容更新目录
查看>>
Wsus Client ID重复问题
查看>>
我的友情链接
查看>>
LSA类型
查看>>
正则表达式的匹配
查看>>
机器学习算法Review之分类
查看>>
Cisco ××× 实例配置方案
查看>>
JVM工作原理学习笔记
查看>>
windows 共享访问相关问题
查看>>
DC的sysvol目录管理!
查看>>
Linux学习笔记4.2-Linux组管理
查看>>
js 数组常用方法
查看>>
apache 防盗链 与 地址重写
查看>>