CAS原理介绍

news/2024/9/21 21:30:46/

一.CAS介绍

CAS采用乐观锁思维,是一种非阻塞原子性操作,保证了比较-更新的原子性。

二.CAS原理

1.CAS三个构成

内存值

旧的预期值

新的预期值

当多线程使用CAS访问共享资源时,只有一个能成功。当旧预期值和新预期值相等时才能修改成功,失败的线程可以尝试自旋或者什么都不做。  

三.JUC中的CAS操作

以AtomicInteger为例,分析自增方法getAndAdd();

    public final int getAndAdd(int delta) {return unsafe.getAndAddInt(this, valueOffset, delta);}

进入unsafe查看getAndAdd方法的具体实现

    // val1 为内存地址 var2 为旧值 var4 为自增的数值public final int getAndAddInt(Object var1, long var2, int var4) {int var5;do {// 从val1地址上获取新的值给val5var5 = this.getIntVolatile(var1, var2);// 如果旧值和新值一样,则var1内存中的值更新为val4+val5,否则更新值为val1内存的值} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));return var5;}

四.ABA问


http://www.ppmy.cn/news/22589.html

相关文章

从React源码分析看useEffect

从React源码分析看useEffect

热身准备 这里不再讲useLayoutEffect,它和useEffect的代码是一样的,区别主要是: 执行时机不同;useEffect是异步, useLayoutEffect是同步,会阻塞渲染; 初始化 mount mountEffect 在所有hook…
阅读更多...
【Docker知识】重定向 Docker 的根目录

【Docker知识】重定向 Docker 的根目录

一、说明 Docker 将下载的镜像、正在运行的容器和持久卷数据存储在系统驱动器上的单个共享目录根目录中。如果您期望在外存(磁盘)、或网络共享存储docker各种对象(比如将一个容器通过U盘拷走),就需要配置个性化存储空间…
阅读更多...
LeetCode每日一题(60. Permutation Sequence)

LeetCode每日一题(60. Permutation Sequence)

The set [1, 2, 3, …, n] contains a total of n! unique permutations. By listing and labeling all of the permutations in order, we get the following sequence for n 3: “123” “132” “213” “231” “312” “321” Given n and k, return the kth permutati…
阅读更多...
虹科分享|您的遗留系统的安全性如何?

虹科分享|您的遗留系统的安全性如何?

自2023年1月10日起,Windows 7、Windows 8、Windows 8.1及其衍生产品Windows Embedded以及Windows Server 2008 R2将不再收到微软提供的补丁程序。数以百万计的设备现在将成为“遗留”设备,并产生一系列新的遗留安全风险。 Windows 7支持结束,…
阅读更多...
c++ 基础(新手入门必看)

c++ 基础(新手入门必看)

C基础讲解,用于C语言向C的衔接 文章目录命名空间C输入输出缺省参数函数重载引用内联函数auto关键字基于范围for循环指针空值 -- nullptr命名空间 如果你以前看到过C的程序,那么你大概率会看到这样一行代码 这行代码就用到了命名空间的知识,…
阅读更多...
Openssl win10 x64编译

Openssl win10 x64编译

下载openssl:下载地址:https://www.openssl.org/source/选择要下载的源码:下载perl:下载地址: https://strawberryperl.com/ or(https://www.activestate.com/products/perl/)选择下载版本:下载完后装&…
阅读更多...
Ubuntu中NumCpp安装教程

Ubuntu中NumCpp安装教程

Ubuntu上NumCpp安装教程 NumCpp是python中numpy库的c版本。 下载NumCpp git clone https://github.com/dpilger26/NumCpp.git下载boost,下述安装链接为范例,需要随boost版本升级进行修改… wget https://boostorg.jfrog.io/artifactory/main/release/…
阅读更多...
传感器模组:手机摄像头模组-1亿像素是如何实现的?

传感器模组:手机摄像头模组-1亿像素是如何实现的?

目录 摄像头模组实现对图像信息的捕获。从传感器和人的关系讲,摄像头模组类似于人的眼睛,其作用不言而喻。 一、手机摄像头的发展历史 二、基本概念 三、摄像头组成及成像原理 四、多摄像头组合的成像原理 4.1 双摄 4.2 三摄 4.3 四摄 五、图像…
阅读更多...
最新文章

PHP网站源码廊坊网站建设排名优化青岛网站优化词被降权网站怎么优化上城区网站优化推广平台网站优化软件技术专业平顶山百度网站优化费用低企业网站如何做好优化云阳网站排名优化和田网站推广优化古冶靠谱的网站优化有哪些百度推广优化网站企业网站优化方案范文开平网站优化哪家好晋州网站优化外包公司番禺网站关键字优化网站优化加盟企业网站优化推广工具网站优化外链网站的优化认准火18星妙手长春百长春网站设计度优化网站建设优化服务报价百度优化网站如何做做360优化网站都有哪家广州seo网站推广优化常德专业营销型网站优化登封网站建设优化推广网站关键词优化教学视频网站设计网络推广优化海口网站优化排名平台青岛手机网站优化哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化