java并发、自旋CAS、原子类 atomicInteger(深入理解)

本文介绍了Java并发中的CAS(Compare and Swap)机制,详细阐述了AtomicInteger类的工作原理及其在并发中的作用。通过 Unsafe 类和自旋锁,理解CAS的底层实现,并讨论了CAS的优缺点,如ABA问题及其解决方案。
摘要由CSDN通过智能技术生成

目录

1.什么是CAS? ---比较并交换(compare and swap)

1.1 AtomicInteger是什么?

1.2 AtomicInteger 小Demo

2.CAS的底层原理

 2.1 一句话解释:Unsafe类和自旋锁

 2.2 Unsafe类

 2.3 自旋锁

3.CAS的优缺点?

 3.1CAS优点

 3.2CAS缺点

4.CAS存在的问题

 4.1引出ABA问题?

 4.2如何解决ABA问题?


1.什么是CAS? ---比较并交换(compare and swap)

    它是一条并发原语,atomicInteger(原子Integer)里面就是通过CAS实现原子性的,可以知道,CAS其实就是atomicInteger原子类的低层实现方式。

1.1 AtomicInteger是什么?

之前,我们学volatile 的时候知道,volatile不保证原子性,在多线程环境下执行i++的时候,会发生意想不到的结果。为了让i++此类的操作在多线程环境下是原子操作(如果有对原子性不理解的可以参考   原子性 ),在jdk1.5之后,出现了JUC(java.util.concurrent),里面有个AtomicInteger类就是用来保证i++这个操作是原子的,atomicInteger(原子Integer)里面就是通过CAS实现原子性的。

1.2 AtomicInteger 小Demo

        AtomicInteger atomicInteger = new AtomicInteger(5);

        System.out.println(atomicInteger.compareAndSet(5,2019)+"  "+ atomicInteger.get());
        System.out.println(atomicInteger.compareAndSet(5,1024)+"  "+atomicInteger.get());
//result
true  2019
false  2019

 AtomicInteger的讲解 可以参考                AtomicInteger类的理解与使用

2.CAS的底层原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值