当前位置: 首页 > wzjs >正文

报社新闻网站建设方案长春网站建设技术支持

报社新闻网站建设方案,长春网站建设技术支持,房产网站代理,wordpress dux5.0CAS CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。 CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。 更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同…

CAS

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。

CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。

更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。

从思想上来说,Synchronized属于悲观锁,悲观地认为程序中的并发情况严重,所以严防死守。CAS属于乐观锁,乐观地认为程序中的并发情况不那么严重,所以让线程不断去尝试更新。

Synchronized关键字会让没有得到锁资源的线程进入BLOCKED状态,而后在争夺到锁资源后恢复为RUNNABLE状态,这个过程中涉及到操作系统用户模式内核模式的转换,代价比较高。

尽管Java1.6为Synchronized做了优化,增加了从偏向锁轻量级锁再到重量级锁的过度,但是在最终转变为重量级锁之后,性能仍然较低。

Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作

这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何关于这个类的方法的解释。总而言之,对于Unsafe类的使用都是受限制的,只有授信的代码才能获得该类的实例,当然JDK库里面的类是可以随意使用的。

实现

CAS有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做并返回false

CAS也是通过Unsafe实现的,看下Unsafe下的三个方法:

public final native boolean compareAndSwapObject(Object paramObject1, long paramLong, Object paramObject2, Object paramObject3);
public final native boolean compareAndSwapInt(Object paramObject, long paramLong, int paramInt1, int paramInt2);
public final native boolean compareAndSwapLong(Object paramObject, long paramLong1, long paramLong2, long paramLong3);

例子:

在这里插入图片描述

使用场景

1、原子操作类

所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。例如AtomicBooleanAtomicIntegerAtomicLong。它们分别用于Boolean,Integer,Long类型的原子性操作。

2、Lock类

3、轻量级锁在升级为重量级锁之前会有一个自旋并通过cas获取锁的过程

4、java.util.concurrent包完全建立在CAS之上

缺点

1.CPU开销较大

需要结合自旋使用,在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更新不成功,循环往复,会给CPU带来很大的压力。

2.不能保证代码块的原子性

CAS机制所保证的只是一个变量的原子性操作,而不能保证整个代码块的原子性。比如需要保证3个变量共同进行原子性的更新,就不得不使用Synchronized了。

3.ABA问题

这是CAS机制最大的问题所在。

如果一个变量V初次读取的时候是A值,并且在准备赋值的时候检查到它仍然是A值,那我们就能说明它的值没有被其他线程修改过了吗?如果在这段期间它的值曾经被改成了B,然后又改回A,那CAS操作就会误认为它从来没有被修改过。这个漏洞称为CAS操作的"ABA"问题。

java.util.concurrent包为了解决这个问题,提供了一个带有标记的原子引用类"AtomicStampedReference",它可以通过控制变量值的版本来保证CAS的正确性。不过目前来说这个类比较"鸡肋",大部分情况下ABA问题并不会影响程序并发的正确性,如果需要解决ABA问题,使用传统的互斥同步可能回避原子类更加高效。

参考

Unsafe与CAS - 五月的仓颉 - 博客园 (cnblogs.com)

漫画:什么是CAS机制 - 开源最前线 - 博客园 (cnblogs.com)

http://www.dtcms.com/wzjs/447115.html

相关文章:

  • 网站建设实训结论与分析总结长沙百度首页优化排名
  • 橙子建站有风险吗百度指数pc版
  • 网建部seo是什么的
  • 北京网站建设 app软文写手兼职
  • wordpress做双语网站网站内容管理系统
  • 自己做网站 什么宁波seo外包推广平台
  • 信誉好的菏泽网站建设百度竞价推广计划
  • 一个公网ip可以做几个网站网络seo关键词优化技术
  • 如何说明学校网站建设情况做百度推广代运营有用吗
  • 网站结构设计怎么写黄冈网站推广软件费用是多少
  • wordpress有游客注册帐号功能网站seo综合诊断
  • 网站建设惠州seo营销是什么意思
  • 先进网站建设流程兔子bt樱桃搜索磁力天堂
  • java web 做购物网站网络营销的网站建设
  • 网站建设案例精英推广引流的10个渠道
  • 移动网站开发书籍百度助手app下载
  • wordpress登录后转到wp首页兰州seo网站建设
  • 沧州做网站的公司南京疫情最新消息
  • wordpress安装语言设置中文杭州百度首页优化
  • 如何做淘宝网网站域名专门开发小程序的公司
  • 网站的优势是什么意思怎么样建一个网站
  • 网站开发语言net网上怎么推销自己的产品
  • 网站开发 文档网站制作的步骤
  • 北京东宏建设网站百度app内打开
  • 分销商平台如何做好关键词的优化
  • 网上开店需要营业执照吗网站seo推广排名
  • 资源网站怎么做搜索引擎优化seo价位
  • 网站防劫持怎么做北京网站优化企业
  • 做设计兼职的网站有哪些工作厦门seo计费
  • 中建八局第一建设有限公司青岛分公司旺道seo推广有用吗