未完待续,预计10.28完成
jdk:1.8.0_65
1 前言
首先需要了解什么是原子性,原子性只有两种状态,要么改变,要么不改变。非原子操作都会出现线程安全问题。
那么如何实现一个原子操作,可以有三种方式:
第一种:使用同步技术,sychronized代码块。
第二种:lock接口。
第三种:原子数据结构,如AtomicBoolean、AtomicInteger、AtomicLong等。
以下是针对原子数据结构进行解读。
2.原子数据结构
- package java.util.concurrent.atomic
2.1 原子更新基本类型
AtomicBoolean:更新的 boolean
值。
AtomicInteger:更新的 int
值。
AtomicLong:更新的 long
值。
2.2 原子更新数组
AtomicIntegerArray:更新其元素的 int
数组。
AtomicLongArray:更新其元素的 long
数组。
2.3 原子更新引用类型
AtomicReference:更新的对象引用。
AtomicMarkableReference:维护带有标记位的对象引用,可以原子方式对其进行更新。
AtomicReferenceArray:元素的对象引用数组。
AtomicStampedReference:维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。
2.4 基于反射的实用工具类
AtomicIntegerFieldUpdater:可以对指定类的指定 volatile int
字段进行原子更新。
AtomicLongFieldUpdater:可以对指定类的指定 volatile long
字段进行原子更新。
AtomicReferenceFieldUpdater:可以对指定类的指定 volatile
字段进行原子更新。
3.原子数据结构应用示例
4.扩展