Java并发编程札记-(三)JUC原子类-01概述
来源:互联网 发布:test linux 编辑:程序博客网 时间:2024/04/27 02:12
今天来学习JUC原子类。JUC原子类位于java.util.concurrent.atomic包下,支持在单个变量上解除锁的线程安全编程。
参考JDK1.8的java.util.concurrent.atomic包,画出如下图:
可以将包中的类分为五类:
- 基本类型:AtomicBoolean、AtomicInteger、AtomicLong
- 引用类型:AtomicReference、AtomicStampedRerence、AtomicMarkableReference
- 数组、AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
- 对象的属性:AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater
- JDK1.8新增:DoubleAccumulator、LongAccumulator、DoubleAdder、LongAdder
AtomicBoolean、AtomicInteger、AtomicLong和AtomicReference的实例各自提供对相应类型单个变量的原子方式访问和更新功能。例如AtomicBoolean提供对int类型单个变量的原子方式访问和更新功能。
每个类也为该类型提供适当的实用工具方法。例如,类AtomicLong和AtomicInteger提供了原子增量方法,可以用于生成序列号。
AtomicStampedRerence维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。AtomicMarkableReference维护带有标记位的对象引用,可以原子方式对其进行更新。
AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray类进一步扩展了原子操作,对这些类型的数组提供了支持。例如AtomicIntegerArray是可以用原子方式更新其元素的int数组。
AtomicReferenceFieldUpdater、AtomicIntegerFieldUpdater和AtomicLongFieldUpdater是基于反射的实用工具,可以提供对关联字段类型的访问。例如AtomicIntegerFieldUpdater可以对指定类的指定volatile int字段进行原子更新。
DoubleAccumulator、LongAccumulator、DoubleAdder、LongAdder是JDK1.8新增的部分,是对AtomicLong等类的改进。比如LongAccumulator与LongAdder在高并发环境下比AtomicLong更高效。
原子类可以替换锁吗?
原子类不是锁的常规替换方法。仅当对象的重要更新限定于单个变量时才应用它。
原子类和java.lang.Integer等类的区别
原子类不提供诸如hashCode和compareTo之类的方法。因为原子变量是可变的。
为什么只提供了int、long、boolean这几种基本类型的原子类?
待补充。
本文就讲到这里,想了解Java并发编程更多内容请参考:
- Java并发编程札记-目录
END.
- Java并发编程札记-(三)JUC原子类-01概述
- Java并发编程札记-(三)JUC原子类-02原子方式更新单个变量
- Java并发编程札记-(三)JUC原子类-03原子方式更新数组
- Java并发编程札记-(三)JUC原子类-04原子方式更新引用
- Java并发编程札记-(三)JUC原子类-06JDK1.8新增:LongAdder、DoubleAdder、LongAccumulator、DoubleAccumulator
- Java并发编程札记-(三)JUC原子类-07CAS操作
- Java并发编程札记-(三)JUC原子类-05原子方式更新类的指定volatile字段
- Java并发编程札记-(二)JUC概述
- Java并发编程札记-(四)JUC锁-01概述
- Java并发编程札记-(五)JUC容器-01概述
- java并发编程(十)----JUC原子类介绍
- Java多线程系列--【JUC原子类01】- AtomicLong原子类
- java并发编程(十一)----(JUC原子类)基本类型介绍
- java并发编程(十二)----(JUC原子类)数组类型介绍
- java并发编程(十四)----(JUC原子类)对象的属性修改类型介绍
- 详解JUC之原子类概述
- Java并发编程札记-(四)JUC锁-03AQS
- Java并发编程札记-(四)JUC锁-04Condition简介
- 接口回调自身体会
- 如何让DEV跳出的“提示试用版”的对话框不再显示
- Codeblock的主要下载安装流程
- 快速排序学习 以数组中间值为轴
- Spring Boot + Mybatis多数据源和动态数据源配置
- Java并发编程札记-(三)JUC原子类-01概述
- IDA动态调试android so
- JavaScript面向对象练习之计时器
- 快速乘法
- 图算法
- springMVC Interceptor遇到的问题
- 空间格局随机化ASLR
- 关于Latex并排两张表格的解决方案
- 鼠标聚焦事件onfocus