1. 原子更新基本类型类

2. 原子更新数组

3. 原子更新引用

4. 原子更新属性

5. txt

 java 原子操作类Atomic
概述
java.util.concurrent.atomic里的原子操作类提供了线程安全地更新一个变量的方式
4大类型13个原子操作类
基本类型类
AtomicBoolean
AtomicInteger
AtomicLong
数组
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
引用
AtomicReference
AtomicReferenceFieldUpdater
AtomicMarkableReference
属性
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedReference
核心底层
CAS
Unsafe只提供了3中CAS方法
final native boolean compareAndSwapObject()
final native boolean compareAndSwapInt()
final native boolean compareAndSwapLong()
原子更新基本类型类
原子更新一个变量
AtomicBoolean
原子更新布尔类型
将Boolean转换成整型,再使用compareAndSwapInt进行CAS,所以原子更新char,double,double变量也可以用类似的思路来实现
AtomicInteger
原子更新整型
int addAndGet(int delta)
以原子的方式将输入的数值与实例中的值相加,并返回结果
boolean compareAndSet(int expect, int update)
如果输入的值等于预期值,则以原子方式将该值设置为输入的值
int getAndIncrement()
以原子方式将当前值加1,注意这里返回的是自增前的值
void lazySet(int newValue)
其他线程在之后的一小段时间内还是可以读到就得值,但最终会设置成newValue
int getAndSet(int newValue)
以原子的方式设置成newValue的值,并返回旧值
AtomicLong
原子更新长整型
原子更新数组
通过原子的方式更新数组里的某个元素
AtomicIntegerArray
原子更新整形数组里的元素
int addAndGet(int i, int delta)
以原子的方式将输入的数值与数组中索引 i 的元素相加,并返回结果
boolean compareAndSet(int i, int expect, int update)
如果输入的值等于预期值,则以原子方式将该数组位置 i 的元素设置为输入的值
注意,数组是通过构造函数AtomicIntegerArray(value) 传递进去的,然后会将value数组复制一份,所以当对内部的数组元素进行修改时,不会影响传入的数组value
AtomicLongArray
原子更新长整型数组里的元素
AtomicReferenceArray
原子更新引用类型数组里的元素
原子更新引用
如果要原子地更新多个变量,就需要使用这个原子更新引用类型提供的类
AtomicReference
原子更新引用类型
AtomicReferenceFieldUpdater
原子更新引用类型里的字段
AtomicMarkableReference
原子更新带有标记位的引用类型,可以用于原子的更新数据和数据的版本号,可以解决使用CAS进行原子更新可能出现的ABA问题
原子更新属性
如果需要某各类的某个字段,使用原子更新字段类
2大步骤
1. 用静态方法newUpdater()创建一个更新器,并且需要设置想要更新的类和属性
2. 更新的类的字段/属性必须使用public volatile修饰符
AtomicIntegerFieldUpdater
原子更新整型的字段的更新器
AtomicLongFieldUpdater
原子更新长整型的字段的更新器
AtomicStampedReference
原子更新带有版本号的引用类型
final native boolean compareAndSwapObject()

6. 参考网址

  1. 参考来源:http://cmsblogs.com/wp-content/resources/img/sike-juc.png
  2. 《Java并发编程的艺术》_方腾飞PDF 提取码:o9vr
  3. http://ifeve.com/the-art-of-java-concurrency-program-1/
  4. Java并发学习系列-绪论
  5. Java并发编程实战
  6. 死磕 Java 并发精品合集

最新文章

  1. ICSharpCode.SharpZipLib.dll 移植WP
  2. 正则去掉img标签的style样式
  3. tangram2.6(XE2)\framework框架加载包异常 调试的地方
  4. PHP简单漂亮的分页类
  5. Python学习【第一篇】Python简介
  6. mysql的text类型长度问题
  7. Cocos2d-x优化中多线程并发访问
  8. 如何使用ping和tracert命令测试网站访问速度
  9. Servlet&JSP中的知识点
  10. IOS开发-通知与消息机制
  11. ios 测试工程是否内存泄漏
  12. Druid VS Antlr4
  13. Greenplum 日常维护手册 (汇总、点评、备查)
  14. cpp 模版函数
  15. java多线程之守护线程(Daemon)
  16. Python随笔--函数(参数)
  17. Testing - 软件测试知识梳理 - 基础概念
  18. 10.8H5日记
  19. MySQL之UNDO及MVCC、崩溃恢复
  20. 【WPF】自定义鼠标样式

热门文章

  1. 【03】Jenkins:SonarQube
  2. laravel 一些好用的GitHub项目包
  3. js的6种继承方式
  4. 原生ajax中readyState中的含义以及HTTP协议状态码的含义
  5. 如何修改被readonly修饰的属性
  6. Nginx七层负载均衡的几种调度算法
  7. Nginx常见的安装方式
  8. python 和 R 语言 中的 range() 函数
  9. mysql binlog空间维护
  10. httprunner学习25-文件上传multipart/form-data