博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 并发系列之九:java 原子操作类Atomic(13个)
阅读量:4624 次
发布时间:2019-06-09

本文共 3052 字,大约阅读时间需要 10 分钟。

1. 原子更新基本类型类

2. 原子更新数组

3. 原子更新引用

4. 原子更新属性

5. txt

1 java 原子操作类Atomic 2     概述 3         java.util.concurrent.atomic里的原子操作类提供了线程安全地更新一个变量的方式 4         4大类型13个原子操作类 5             基本类型类 6                 AtomicBoolean 7                 AtomicInteger 8                 AtomicLong 9             数组10                 AtomicIntegerArray11                 AtomicLongArray12                 AtomicReferenceArray13             引用14                 AtomicReference15                 AtomicReferenceFieldUpdater16                 AtomicMarkableReference17             属性18                 AtomicIntegerFieldUpdater19                 AtomicLongFieldUpdater20                 AtomicStampedReference21         核心底层22             CAS23                 Unsafe只提供了3中CAS方法24                     final native boolean compareAndSwapObject()25                     final native boolean compareAndSwapInt()26                     final native boolean compareAndSwapLong()27     原子更新基本类型类28         原子更新一个变量29         AtomicBoolean30             原子更新布尔类型31                 将Boolean转换成整型,再使用compareAndSwapInt进行CAS,所以原子更新char,double,double变量也可以用类似的思路来实现32         AtomicInteger33             原子更新整型34                 int addAndGet(int delta)35                     以原子的方式将输入的数值与实例中的值相加,并返回结果36                 boolean compareAndSet(int expect, int update)37                     如果输入的值等于预期值,则以原子方式将该值设置为输入的值38                 int getAndIncrement()39                     以原子方式将当前值加1,注意这里返回的是自增前的值40                 void lazySet(int newValue)41                     其他线程在之后的一小段时间内还是可以读到就得值,但最终会设置成newValue42                 int getAndSet(int newValue)43                     以原子的方式设置成newValue的值,并返回旧值44         AtomicLong45             原子更新长整型46     原子更新数组47         通过原子的方式更新数组里的某个元素48         AtomicIntegerArray49             原子更新整形数组里的元素50                 int addAndGet(int i, int delta)51                     以原子的方式将输入的数值与数组中索引 i 的元素相加,并返回结果52                 boolean compareAndSet(int i, int expect, int update)53                     如果输入的值等于预期值,则以原子方式将该数组位置 i 的元素设置为输入的值54                 注意,数组是通过构造函数AtomicIntegerArray(value) 传递进去的,然后会将value数组复制一份,所以当对内部的数组元素进行修改时,不会影响传入的数组value55         AtomicLongArray56             原子更新长整型数组里的元素57         AtomicReferenceArray58             原子更新引用类型数组里的元素59     原子更新引用60         如果要原子地更新多个变量,就需要使用这个原子更新引用类型提供的类61         AtomicReference62             原子更新引用类型63         AtomicReferenceFieldUpdater64             原子更新引用类型里的字段65         AtomicMarkableReference66             原子更新带有标记位的引用类型,可以用于原子的更新数据和数据的版本号,可以解决使用CAS进行原子更新可能出现的ABA问题67     原子更新属性68         如果需要某各类的某个字段,使用原子更新字段类69             2大步骤70                 1. 用静态方法newUpdater()创建一个更新器,并且需要设置想要更新的类和属性71                 2. 更新的类的字段/属性必须使用public volatile修饰符72         AtomicIntegerFieldUpdater73             原子更新整型的字段的更新器74         AtomicLongFieldUpdater75             原子更新长整型的字段的更新器76         AtomicStampedReference77             原子更新带有版本号的引用类型78     final native boolean compareAndSwapObject()
View Code

 

6. 参考网址

  1. 参考来源:
  2.  提取码:o9vr

转载于:https://www.cnblogs.com/haimishasha/p/11199874.html

你可能感兴趣的文章
C#编写好的windows服务,在本机上运行很好,考到其他电脑运行出现“错误1053: 服务没有及时响应启动或控制请求”的解决办法...
查看>>
C/C++---printf/cout 从右至左压栈顺序实例详解
查看>>
hadoop hadoop install (1)
查看>>
synchronized 原理分析
查看>>
评价指标的计算:accuracy、precision、recall、F1-score等
查看>>
超棒的视差滚动效果javascript类库 - Jarallax
查看>>
一款纯css实现的垂直时间线效果
查看>>
梯度下降 随机梯度下降 批量梯度下降
查看>>
ThinkPHP5整合原生Swoole实现NBA比赛图文直播以及聊天室功能
查看>>
vuex中store保存的数据,刷新页面会清空
查看>>
java模板设计模式
查看>>
tarjian求lca
查看>>
shell中 "" 跟 ''的区别
查看>>
gdb调试core文件
查看>>
【动态规划】抄近路
查看>>
IsPostBack--Asp.net
查看>>
拉格朗日反演证明
查看>>
第十二周 出门门票 20162305
查看>>
IOS第八天(3:UITableViewController团购, 点击底部代码调整)
查看>>
MySQL slow_log表不能修改成innodb引擎
查看>>