美文网首页
编程 || Atomic、CAS

编程 || Atomic、CAS

作者: 快语 | 来源:发表于2022-11-03 20:21 被阅读0次

有很多Atomic开头的类,比如AtomicInteger等。它和Integer是不同的,不同就不同在并发的情况下,前者是线程安全的,后者不是。
Atomic的安全来自哪里,来自它的CAS机制。
什么是CAS,compare and swap,比较再替换。其实就是乐观锁机制,当我去替换这个值的时候,我先检查一下这个是不是我认为它该有的状态。
比如AtomicInteger的值原本是1,那么线程a对它加1,那么结果应该是2。在将2复制给变量的时候,会判断它的现值是不是1,如果其他线程对它改动过了,那么它的现值必然就不是1。
AtomicInteger还会有个隐藏的问题叫ABA,就是现值虽然和期望的一样,但是可能是经过一番波折后才变成一样的。这时候就看业务上是否讲究了。

那Atomic的好处是什么呢?
它可以避免线程的切换,线程切换是一件成本很高的事儿。但是,也看场景。Atomic就像个愣头青一样,线程阻塞后就拼命地去改改改,但是如果一直没有达到运行条件,那么就会无限循环耗尽CPU,这同样也是一件成本很高的事儿。
所以,要tradeoff。

相关文章

  • 编程 || Atomic、CAS

    有很多Atomic开头的类,比如AtomicInteger等。它和Integer是不同的,不同就不同在并发的情况下...

  • Java并发编程

    一、Java并发编程的挑战 1.1 如何减少上下文切换? 无锁并发编程: CAS算法:Java的Atomic包使用...

  • (转载)Java并发编程-并发包中的原子操作类(Atomic系列

    原文链接:Java并发编程-无锁CAS与Unsafe类及其并发包Atomic - CSDN博客 通过前面的分析我们...

  • 慕课网高并发实战(二)-线程安全性

    .课程网站 原子性-Atomic包 1、CAS(Compare and Swap) CAS:Compare and...

  • (转载)Java并发编程-无锁CAS与Unsafe类

    原文链接:Java并发编程-无锁CAS与Unsafe类及其并发包Atomic - CSDN博客 在前面一篇博文中,...

  • 极简CAS

    CAS 乐观锁 compare and then swap else 自旋 Atomic的核心操作就是CAS(co...

  • CAS

    CAS:Compare AND Swapjdk1.5之后出现的atomic类都依赖与CAS CAS的三个核心参数 ...

  • Java多线程之原子操作类

    本文目录 CAS原理与问题1.1 CAS的操作过程1.2 CAS的问题 Atomic包的使用2.1 原子更新基本类...

  • CAS机制

    还有就是这个atomic包,使用可以达到synchronized的效果,实现原理就是CAS了。 CAS也叫自旋锁,...

  • 简述CAS

    CAS是什么? CAS即Compare And Swap,是Java乐观锁的一种应用,常常应用在Atomic包中。...

网友评论

      本文标题:编程 || Atomic、CAS

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