CAS

描述

        CAS(Compare And Swap)就是乐观锁机制。加锁就是原子操作,原子操作就是类似于事务,syn就是原子操作。

原理

        利用现代处理器的CAS指令,循环这个指令,直到成功为止。

CAS问题

        1、ABA问题:根据版本号可以解决。

        2、开销问题:因为可能不断循环计算,所以比较消耗cpu性能

        3、只能保证一个共享变量的原子操作

Jdk中相关原子操作类的使用

        (1) 更新基本类型类:AtomicBoolean,AtomicInteger,AtomicLong;

        (2) 更新数组类:AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray;

        (3)更新引用类型类:AtomicReference(可以解决只能有一个共享变量的问题),AtomicMarkableReference(会记录是否变化,可以解决ABA问题),AtomicStampedReference(会记录变化的次数,可以解决ABA问题);

        (4) 原子更新字段类:AtomicReferenceFieldUpdater(更新某个类中的某个字段),AtomicIntegerFieldUpdater,AtomicLongFieldUpdater。

        Atomic原理:Atomic操作数组实际上更改数据后是新建了一个数组而不会操作原来的数组。使用AtomicReference可以解决只能修改一个变量的问题。

        

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容