首页 > 其他分享 >原子类

原子类

时间:2024-03-03 23:33:49浏览次数:25  
标签:变量 累加器 AtomicInteger 原子 Atomic 类型

原子类

目录

什么是原子类,有什么作用

  • 不可分割
  • 一个操作是不可分割的,即便是多线程的情况下,也可以保证
  • 都存放在java.util.concurrent包下。
  • 原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势
    • 粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度
    • 效率更高:通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况

6类原子类纵览

image-20240303122536504

Atomic*基本类型原子类 AtomicInteger、AtomicLong、AtomicBoolean
Atomic*Array数组类型原子类 AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
Atomic*Reference引用类型原子类 AtomicReference、AtomicStampedReference、AtomicMarkableReference
Atomic*FieldUpdater升级类型原子类 AtomicIntegerfieldupdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdator
Adder累加器 LongAdder、DoubleAdder
Accumulator累加器 LongAccumulator、DoubleAccumulator

Atomic*基本类型,以AtomicInteger为例

  • AtomicInteger
  • AtomicLong
  • AtomicBoolean

常用方法

image-20240303122748013

image-20240303122842376

Atomic*Array数组类型原子类

Atomic*Reference引用类型原子类

把普通变量升级为原子类:用AtomicIntegerFieldUpdate升级原有变量

Adder累加器

Accumulator累加器

标签:变量,累加器,AtomicInteger,原子,Atomic,类型
From: https://www.cnblogs.com/shine-rainbow/p/18050995

相关文章

  • JUC系列之(三)原子变量
    原子变量-CAS算法1.i++的原子性问题i++的计算原理:读-改-写inttemp=i;i=i+1;将i++赋给其他变量的时候会将temp的值赋给其他变量,比如:inti=10;i=i++;//这里i的值就是10,i++的值实际上就是临时变量temp的值i++的原子性问题实例packagecom.atguigu.juc;......
  • 紧束缚方法中基于原胞坐标和原子坐标两种傅里叶变换法
    见https://www.guanjihuan.com/archives/16199和https://zhuanlan.zhihu.com/p/92538964其中提到在计算陈数时,这两种变换方法会有区别,在上面这个知乎中提到:SSH模型中的这两种变换方法:在严谨的经验紧束缚法中,其实是基于原子坐标的傅里叶变换法:布洛赫和:类似地:哈密顿量和哈......
  • C++多线程 第五章 C++内存模型和原子类型
    第五章C++内存模型和原子类型无论其他语言如何,C++是一门系统编程语言.委员会希望不再需要一个比C++低级的语言.内存模型基础C++程序中所有的数据均是由对象(object)组成的.C++标准定义对象为"存储区域",经管它会为这些对象分配属于它们的类型和生存期.无论什么类型,对象......
  • Erlang 学习之第四天 . 列表,文件,原子,映射,元组,记录
    Erlang列表列表属于数据类型里面的集合, 列表是用于存储数据项集合的结构。在Erlang中,列表是通过将值括在方括号[]中来创建的。实例:  start() ->    Lst1 = [1,2,3],    io:fwrite("~w~n",[Lst1]).输出结果是:[123]以下是列表的方法说明:all: ......
  • java Atomic原子类&&常见并发容器
    Atomic原子类Atomic原子类介绍Atomic翻译成中文是原子的意思。在这里Atomic是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包 java.util.concurrent 的原......
  • Java原子性、可见性、有序性的解析
    一、原子性原子性指操作在CPU执行的过程中,不可中断,也不可在中途切换,要么执行完成要么不执行。packagelearn;/***@authorqx*@date2024/1/5*@des*/publicclassThreadAtomicityTest{privateintstep;publicintgetStep(){returnstep;......
  • JUC【1.原子类、2.锁Lock、3.阻塞队列、4.并发集合容器、5.并发工具类、6.线程池】、
    (JUC简介)转自极客时间1.JUC简介从JDK1.5起,JavaAPI中提供了java.util.concurrent(简称JUC)包,在此包中定义了并发编程中很常用的工具,比如:线程池、阻塞队列、同步器、原子类等等。JUC是JSR166标准规范的一个实现,JSR166以及JUC包的作者是同一个人DougLea。2.原......
  • synchronized【如何保证原子性、可见性、有序性】【如何实现原子性 原理解析】【什么
    @TOC转自极客时间如何解决可见性问题?同步原理剖析什么是Monitor?什么是锁优化?......
  • OpenCloudOS 迁移工具征集中,18 万奖金等你来拿!|开放原子开源大赛
    2023 年,由开放原子开源基金会承办的首届「开放原子开源大赛」面向全球开启。OpenCloudOS 社区以「OpenCloudOS 8 至 OpenCloudOS 9 操作系统迁移工具研发」为赛题参与基础软件赛道。为了帮助用户更好的从OpenCloudOS8迁移到OpenCloudOS9,需要研发更可靠的迁移工具,并在迁......
  • OpenCloudOS 迁移工具征集中,18 万奖金等你来拿!|开放原子开源大赛
    2023 年,由开放原子开源基金会承办的首届「开放原子开源大赛」面向全球开启。OpenCloudOS 社区以「OpenCloudOS 8 至 OpenCloudOS 9 操作系统迁移工具研发」为赛题参与基础软件赛道。为了帮助用户更好的从OpenCloudOS8迁移到OpenCloudOS9,需要研发更可靠的迁移工具,并在......