美文网首页
[安卓开发日记] CAS

[安卓开发日记] CAS

作者: chopperhl | 来源:发表于2020-04-09 17:46 被阅读0次
//AtomicInteger
public final int incrementAndGet() {
     return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
}

//UnSafe
public final int getAndAddInt(Object var1, long var2, int var4) {
    int var5;
    do {
        var5 = this.getIntVolatile(var1, var2);
    } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
    return var5;
}
  • 假设线程1和线程2通过getIntVolatile拿到value的值都为1,线程1被挂起,线程2继续执行
  • 线程2在compareAndSwapInt操作中由于预期值和内存值都为1,因此成功将内存值更新为2
  • 线程1继续执行,在compareAndSwapInt操作中,预期值是1,而当前的内存值为2,CAS操作失败,什么都不做,返回false
  • 线程1重新通过getIntVolatile拿到最新的value为2,再进行一次compareAndSwapInt操作,这次操作成功,内存值更新为3

相关文章

  • [安卓开发日记] CAS

    假设线程1和线程2通过getIntVolatile拿到value的值都为1,线程1被挂起,线程2继续执行 线程2在...

  • 安卓自定义View-画圆

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓动画样例-圆环变多变少

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓开发零基础入门系列

    本文由安卓开发007出品 ## 1.1 安卓发展历程## 1.2 安卓开发前景展望## 1.3 安卓开发入门之安装...

  • Android Gson使用详解

    Android Gson使用详解(出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

  • 安卓动画样例-放大缩小

    效果图 实现代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开...

  • 安卓学习笔记

    安卓开发

  • 关于此文集

    介绍 安卓开发菜鸟一枚,从今天开始每日记录开发中遇到的问题

  • 1.androidmiao

    1.android studio是开发安卓系统很好的工具; 2.开发安卓最好用linux系统或者mac,因为安卓是...

  • 安卓开发 开发前你需要了解的一些资料(一)

    前言   在安卓开发 初步了解安卓和配置安卓环境中,我们简单的介绍了安卓和配置安卓环境。我们使用了Android ...

网友评论

      本文标题:[安卓开发日记] CAS

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