- 原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们称它具有原子性。
- java的concurrent包下提供了一些原子类,我们可以通过阅读API来了解这些原子类的用法。比如:AtomicInteger、AtomicLong、AtomicReference等。
-
除了在i++操作时使用synchroinzed关键字实现同步外,还可以使用AtomicInteger原子类进行实现
java.util.concurrent.atomic 包中提供了以下原子类, 它们是线程安全的类
- AtomicBoolean -- 原子布尔
- AtomicInteger -- 原子整型
- AtomicIntegerArray -- 原子整型数组
- AtomicLong -- 原子长整型
- AtomicLongArray -- 原子长整型数组
- AtomicReference -- 原子引用
- AtomicReferenceArray -- 原子引用数组
- AtomicMarkableReference -- 原子标记引用
- AtomicStampedReference -- 原子戳记引用
- AtomicIntegerFieldUpdater -- 用来包裹对整形 volatile 域的原子操作
- AtomicLongFieldUpdater -- 用来包裹对长整型 volatile 域的原子操作
- AtomicReferenceFieldUpdater -- 用来包裹对对象 volatile 域的原子操作
- AtomicBoolean -- 原子布尔
- AtomicInteger -- 原子整型
- AtomicIntegerArray -- 原子整型数组
- AtomicLong -- 原子长整型
- AtomicLongArray -- 原子长整型数组
- AtomicReference -- 原子引用
- AtomicReferenceArray -- 原子引用数组
- AtomicMarkableReference -- 原子标记引用
- AtomicStampedReference -- 原子戳记引用
- AtomicIntegerFieldUpdater -- 用来包裹对整形 volatile 域的原子操作
- AtomicLongFieldUpdater -- 用来包裹对长整型 volatile 域的原子操作
- AtomicReferenceFieldUpdater -- 用来包裹对对象 volatile 域的原子操作
java中的原子类
最新推荐文章于 2024-09-09 14:40:48 发布