美文网首页高并发编程专题
高并发编程-08-JDK提供的原子类操作及原理

高并发编程-08-JDK提供的原子类操作及原理

作者: LoveCoding | 来源:发表于2018-01-10 14:50 被阅读18次

    1,原子类介绍:

    针对数据类型的操作,JDK提供的原子类来方便我们的线程安全控制。

    所有的类保存在 java.util.concurrent.atomic 包中

    基本数据类型 AtomicInteger

    数组类型 AtomicIntegerArray

    2,举个使用的例子:

    解决之前的 i++ 安全性问题

    如何解决?

    AtomicInteger count = new AtomicInteger(0);

    count.incrementAndGet();//相当于count++,区别是这里可以保证是原子操作

    3,原理:

    内部的原理是采用了CAS机制,大家可以通过观察源码就可以发现

    那么什么是CAS机制?

    CAS有人翻译为Compare And Set或Compare And Swap都是正确的。

    在多线程并发执行的状态下,锁的状态改变,基本都是使用CAS原理,它有一个比较别扭的叫法“CPU硬件同步原语”,算法是基于CPU硬件的,原子性操作,不会被其他线程打断。

    CAS的算法,比较当前值和期望的值是否相等,如果相等,则将当前值赋予一个新值。

    再比如修改一个Boolean的类型的变量的值,我们也可以采用

    private AtomicBoolean atomicBoolean = new AtomicBoolean(false);

    public void lock(){

        //期望是false,如果是false,则可以修改为true

        atomicBoolean.compareAndSet(false, true);

    }

    相关文章

      网友评论

        本文标题:高并发编程-08-JDK提供的原子类操作及原理

        本文链接:https://www.haomeiwen.com/subject/vduinxtx.html