CAS算法与Java原子类( 二 )
- AtomicReference原子更新引用类型 , 通过泛型指定要操作的类
- AtomicMarkableReference原子更新引用类型 , 内部维护一个 Pair 类型(静态内部类)的成员属性 , 其中有一个 boolean 类型的标志位 , 避免 ABA 问题
- private static class Pair { final T reference; final boolean mark; private Pair(T reference, boolean mark) { this.reference = reference; this.mark = mark; } staticPair of(T reference, boolean mark) {return new Pair(reference, mark); }}private volatile Pair
pair - AtomicStampedReference原子更新引用类型 , 内部维护一个 Pair 类型(静态内部类)的成员属性 , 其中有一个 int 类型的邮戳(版本号) , 避免 ABA 问题
- private static class Pair { final T reference; final int stamp; private Pair(T reference, int stamp) { this.reference = reference; this.stamp = stamp; } staticPair of(T reference, int stamp) {return new Pair(reference, stamp); }}private volatile Pair
pair
- AtomicIntegerArray原子更新 int 数组中的元素
- AtomicLongArray原子更新 long 数组中的元素
- AtomicReferenceArray原子更新 Object 数组中的元素
- AtomicIntegerFieldUpdater原子更新对象中的 int 类型字段
- AtomicLongFieldUpdater原子更新对象中的 long 类型字段
- AtomicReferenceFieldUpdater原子更新对象中的引用类型字段
- 字段必须是 volatile 类型的 , 在线程之间共享变量时保证立即可见
- 只能是实例变量 , 不能是类变量 , 也就是说不能加 static 关键字
- 只能是可修改变量 , 不能使用 final 变量
- 该对象字段能够被直接操作 , 因为它是基于反射实现的
文章插图
- LongAccumulatorlong 类型的聚合器 , 需要传入一个 long 类型的二元操作 , 可以用来计算各种聚合操作 , 包括加乘等
- LongAdderlong 类型的累加器 , LongAccumulator 的特例 , 只能用来计算加法 , 且从 0 开始计算
- DoubleAccumulatordouble 类型的聚合器 , 需要传入一个 double 类型的二元操作 , 可以用来计算各种聚合操作 , 包括加乘等
- DoubleAdderdouble 类型的累加器 , DoubleAccumulator 的特例 , 只能用来计算加法 , 且从 0 开始计算
- 创意|wacom one万与创意数位屏测评
- 逛逛|淘宝内容化再升级:“买家秀”变身“逛逛”试图冲破算法局限
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 巅峰|realme巅峰之作:120Hz+陶瓷机身+5000mAh 做到了颜值与性能并存
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- YFI正式宣布与Sushiswap合作|金色DeFi日报 | 合作
- 小店|抖音小店无货源是什么?与传统模式有什么区别?
- 星期一|亚马逊:黑五与网络星期一期间 第三方卖家销售额达到48亿美元
- 迁徙|网红迁徙记:哪里才是奶与蜜之地?
- 与用户|掌握好这4个步骤,实现了规模性的盈利