public class CasDemo {//compareAndSet 比较交换 CASpublic static void main(String[] args) { //设置 期望值1,版本号1AtomicStampedReference<Integer> atomicStampedReference = new AtomicStampedReference(1,1);new Thread(()->{int stamp = atomicStampedReference.getStamp(); //获得版本号System.out.println("a1=>"+stamp);try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(atomicStampedReference.compareAndSet(1, 2, atomicStampedReference.getStamp(),atomicStampedReference.getStamp() + 1));  //达到期望值2020,则更新数据为2022,且版本号+1System.out.println("a2=>"+atomicStampedReference.getStamp());System.out.println(atomicStampedReference.compareAndSet(2, 1, atomicStampedReference.getStamp(),atomicStampedReference.getStamp() + 1)); //达到期望值2020,则更新数据为2022,且版本号+1System.out.println("a3=>"+atomicStampedReference.getStamp());},"a").start();new Thread(()->{int stamp = atomicStampedReference.getStamp(); //获得版本号System.out.println("b1=>"+stamp);try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(atomicStampedReference.compareAndSet(1, 6, stamp, stamp + 1));System.out.println("b2=>"+atomicStampedReference.getStamp());},"b").start();}
}


解决ABA问题 引入原子引用,对应乐观锁.

2021-06-17 compareAndSet 比较交换 CAS相关推荐

  1. Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)

    一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...

  2. python爬虫笔记 -- 更新至2021/06/17

    教学视频1(简略):https://www.bilibili.com/video/BV1164y1m7Xb 教学视频2:https://www.bilibili.com/video/BV1Yh411o ...

  3. 2021.06.06家庭财经系统制作(2)

    show tables; 查看数据库里有什么表命令. 碰到mysql软件问题.比想象的难缠. 用之前的方式打不开黑框(鼠标单击 mysql5.7 ccommand line Client),黑框一闪而 ...

  4. [2021.1.17多校省选模拟4]T1(莫比乌斯反演/组合数学/枚举倍数)

    [2021.1.17多校省选模拟4]T1 一般人都会想着去枚举直线的斜率,但是枚举斜率之后就会产生多条直线,并且这些直线的长度不一,难以快速求解,所以我们考虑换一种方法枚举. 枚举最远点对的横纵坐标之 ...

  5. 2021.06.03邮票面值设计

    2021.06.03邮票面值设计 题目描述 给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值 MAX ...

  6. 【跃迁之路】【497天】程序员高效学习方法论探索系列(实验阶段254-2018.06.17)...

    @(跃迁之路)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. ...

  7. 2021.03.17 pokémon小游戏开发记录与周总结

    2021.03.17 pokémon小游戏开发记录与周总结 此篇仅包含部分项目代码,只是个人的学习总结. 文章目录 2021.03.17 pokémon小游戏开发记录与周总结 前言 一.前期准备 二. ...

  8. AWD平台搭建(Cardinal 从零开始) 2021/11/17

    #Time 2021/11/17 因为之后要在校内组织AWD比赛,所以在github上找了一会,试了试最多star的,虽然说好用但是没有好康的界面,全是一堆代码感觉很枯燥,于是最终还是选择了使用Car ...

  9. 2021.06.02会解方程的计算器

    2021.06.02会解方程的计算器 (题目来源:) 题目描述 为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例: 4+3x=8 6a-5+1=2-2a -5+12y=0 ZL先生被主 ...

  10. 【离散数学】 SEU - 28 - 2021/06/11 - Lattice and Boolean Algebra

    Discrete Mathematical Structures (6th Edition) 2021/06/09 - Lattice and Boolean Algebra Lattice and ...

最新文章

  1. 从事安卓开发6年,我都有哪些收获?
  2. VTK:vtkBoxWidget用法实战
  3. ZOJ - 2676 Network Wars(01分数规划+最小割)
  4. java url 双引号_java - Java在POST请求中发送带有转义双引号的JSON字符串[duplicate] - 堆栈内存溢出...
  5. vuepc端实现数据加载_多模态注意力机制+多模态数据,完全实现端到端课堂活动检测|ICASSP 2020...
  6. MaxCompute印尼开服,成为阿里云第十二个大数据服务节点
  7. python如何画出多个独立的图片_python实现在一个画布上画多个子图
  8. 信息学奥赛C++语言: 第n小的质数
  9. rtsp视频解码-分析-转发http-flv ws-flv webrtc
  10. Windows下的开发环境
  11. mac下nginx安装及与tomcat简单配置
  12. 模板字符串竟然还有这种用法
  13. Git patch的使用方法和场景
  14. ARM+DSP双核处理器应用程序攻略
  15. 【在线教育直播】直播很卡怎么办?
  16. 开始自学PHP之路3(HTML)
  17. 详解C语言中的#define、#undef、#indef、#ifndef、#else、#endif,#if,#elif
  18. JavaScript对象 1
  19. 【Rust日报】 2019-01-26
  20. bookkeeper metadata 获取及密码安全

热门文章

  1. 桥接模式 适配器模式 装饰模式
  2. photos for mather's day
  3. Aerospike 使用场景
  4. inode-软链接与硬链接
  5. 自定义self.editButtonItem 改变自定义self.editButtonItem的背景图片
  6. CF1093D Beautiful Graph
  7. MPLS-TP OAM各个层次
  8. 数据仓库与数据挖掘(二)
  9. SecureCRT中解决乱码的问题
  10. elasticsearch.net search入门使用指南中文版(翻译)