首页 > 编程语言 >Java----CAS算法与AtomicInteger源码解读

Java----CAS算法与AtomicInteger源码解读

时间:2024-07-28 14:24:45浏览次数:18  
标签:Java CAS AtomicInteger 原子 源码 线程 内存 操作

CAS介绍:

为了确保对数据操作的原子性,在java.util.concurrent.atomic下定义许多关于各种基本类型数据的提供原子操作的类。这里我们以AtomicInteger为例子。

AtomicInteger的本质:自旋锁 + CAS算法

CAS的全称是: Compare And Swap(比较再交换); 是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。CAS可以将read-modify-write转换为原子操作,这个原子操作直接由处理器保证。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当旧预期值A和内存值V相同时,将内存值V修改为B并返回true,否则什么都不做,并返回false。

举例说明:

  • 1.在内存值V当中,存储着值为10的变量。
  • 2.此时线程1想要把变量的值增加1。对线程1来说,旧的预期值 A = 10 ,要修改的新值 B = 11。
  • 3.在线程1要提交更新之前,另一个线程2抢先一步,把内存值V中的变量值率先更新成了11。
  • 4.线程1开始提交更新,首先进行A和内存值V的实际值比较(Compare),发现A不等于V的值,提交失败。
  • 5.线程1

标签:Java,CAS,AtomicInteger,原子,源码,线程,内存,操作
From: https://blog.csdn.net/weixin_65237252/article/details/140749746

相关文章

  • 简单聊聊JavaScript 中的原型链、null 和 undefined 的区别
    1.原型链个人观点:原型链和逻辑判断里三段论有些类似,一个大前提、一个小前提、一个结论。比如,动物会吃肉,狗是动物,所以狗会吃肉。这也是继承的思想原型和构造函数JavaScript是基于原型的面向对象编程语言,每个对象都有一个内部链接到另一个对象(即原型)。这个机制被称为原型链。原......
  • 这一文,关于 Java 泛型的点点滴滴 二 (extends、super、<?> 通配符、泛型与反射)
    本文是《这一文,关于Java泛型的点点滴滴》的第二篇,也是最后一篇。在上一篇文章中我们介绍了关于Java泛型的基础知识,而在本文中,我们将深入Java泛型,介绍了extends、super、<?>通配符,并在最后介绍了使用反射获取泛型信息。在阅读本文之前,请先阅读上一篇文章:这一文,关于Jav......
  • [java]小程序,用接口的方式计算两个数的加减乘除
           ......
  • Java 中的集合
    Author:ACatSmilingSince:2024-07-28概述在Java语言中,数组(Array)和集合都是对多个数据进行存储操作的结构,简称Java容器。此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储。数组在内存存储方面的特点:数组一旦初始化以后,其长度就确定了。数组一旦定义好,其元素......
  • Java常见面试题
    1.JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,Java开发工具包,提供了Java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,Java运行环境,为Java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译Java源码的编译器Javac,还包含......
  • 微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)附项目源码与配套文档
    目的和意义微信小程序图书馆座位预约管理系统可以对微信小程序图书馆座位预约管理系统信息进行集中管理,可以真正避免传统管理的缺陷。微信小程序图书馆座位预约管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和......
  • SpringBoot+Vue电影院售票系统 - 附源码与配套文档
    1.1 研究背景随着互联网技术的迅速发展和普及,人们的生活方式发生了深刻变革,对于文化娱乐消费的需求日益增长,而作为文化消费重要组成部分的电影行业也迎来了前所未有的发展机遇。然而,传统的电影院售票模式,如现场购票、电话预定等,已难以满足现代消费者对便捷性、灵活性和个性......
  • 2024最新一元云购源码.完美运营版.机器人自动下单.可指定中奖.一元购源码.一元夺宝源
    2024年最新云购源码一元云购H5新版本新UI 完美运行版•带易支付接口机器人自动购买•可指定中奖云购演示站:yun.6323g.com/ 源码下载链接:https://pan.baidu.com/s/1UsSE3IX_um_eAEcMIBLpHA?pwd=akjd 提取码:akjd  免责声明:该资源仅供学习和研究使用,一切关于该资源......
  • [0298]基于JAVA的保健按摩智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的保健按摩智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当前社会环境下,随着人们对健康日益增长的需求以及生活节奏的加快,保健按摩行业呈现出蓬勃发展的态势。然而,传统的保健按摩企业......
  • [0297]基于JAVA的保健品进销存智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的保健品进销存智慧管理系统的设计与实现指导老师(一)选题的背景和意义【开题报告背景】在当今社会,随着国民健康意识的提升和生活质量追求的增长,保健品市场呈现出持续繁荣的发展态势。然而,伴随着......