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

报社新闻网站建设方案最新搜索引擎排名

报社新闻网站建设方案,最新搜索引擎排名,徐州信息网查询中心,西安网站建设易网宣CAS 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/500967.html

相关文章:

  • 做网站要学那些网络营销的职能有哪些
  • 手机网站 需求模板搜索引擎数据库
  • 网站首页做的好看网站seo哪家好
  • 日本真人做爰直播网站网上广告宣传怎么做
  • 提供秦皇岛网站建设seo快速排名软件方案
  • 南京做中英文网站怎么做网站
  • 外卖网站建设的策划书网站广告制作
  • 网站本地被劫要怎么做google登录
  • 广告公司叫什么名字好推广seo公司
  • 上海企业网站建站模板百度框架户一级代理商
  • 网站制作的收费标准各大搜索引擎收录入口
  • 专业做财经直播网站有哪些市场营销分析案例
  • html5 自适应网站做优化关键词
  • 网站建设多少钱一年搭建一个网站平台需要多少钱
  • 扬中新闻网站地产渠道12种拓客方式
  • 屏蔽某网站怎么做网络营销的三大核心
  • 潍坊路通工程建设有限公司网站百度浏览器官网在线使用
  • 详情页在线设计网站推荐竞价网络推广外包
  • 襄阳做网站开发一个app需要多少钱?
  • 个人网站需求分析余姚seo智能优化
  • 创办网站需要怎么做性能优化大师
  • 全椒有做网站的吗google优化师
  • asp.net 网站开发seo优化服务价格
  • 网络专业的网站建设价格郑州竞价托管代运营
  • 怎么把自己做的网页生成链接win10最强优化软件
  • 深圳专业做网站服务湖人最新消息
  • 模板图片可爱seo项目是什么
  • 网站开发过程中的方法百度电脑版登录网站
  • 做演讲视频的网站百度开店怎么收费
  • 中国商检局做备案网站seo排名优化方式