20230614 java.util.concurrent.atomic.AtomicInteger
介绍
- java.util.concurrent.atomic.AtomicInteger
public class AtomicInteger extends Number implements java.io.Serializable
API
构造器
- AtomicInteger()
- AtomicInteger(int initialValue)
- 设置初始值,默认是 0
public 方法
-
get , set
- 原子操作
- 不同步内存屏障,不能保证对其他线程的变化或者获取到的数值的可见性
-
lazySet
-
getAndSet
- 以原子方式设置新值,并返回旧值
-
compareAndSet
boolean compareAndSet(int expectedValue, int newValue)
- 如果当前值 等于 expectedValue ,则以原子方式将值设置为 newValue
- 如果成功则为 true ,false 返回表示当前实际值不等于预期值
加减n并返回值:
-
getAndIncrement
-
getAndDecrement
- 加减 1 , 返回旧值
-
getAndAdd
int getAndAdd(int delta)
- 加减 n , 返回旧值
-
incrementAndGet
-
decrementAndGet
- 加减 1 , 返回新值
-
addAndGet
- 加减 n , 返回新值
-
getAndUpdate
-
updateAndGet
int getAndUpdate(IntUnaryOperator updateFunction)
- 更新并返回值
-
getAndAccumulate
-
accumulateAndGet
- 累积并返回值
int getAndAccumulate(int x, IntBinaryOperator accumulatorFunction)
accumulatorFunction.applyAsInt(prev, x)
-
getPlain , setPlain
- 不是原子操作,不保证线程安全,性能更高
-
getOpaque , setOpaque
- 使用 “volatile 读” 确保操作的内存可见性,但不会引起任何屏障操作
-
getAcquire
- getAcquire() 方法使用 “volatile 读” 确保操作的内存可见性,并创建一个内存屏障
-
setRelease
- setRelease() 方法使用 “volatile 写” 确保操作的内存可见性,并创建一个内存屏障
-
compareAndExchange
-
compareAndExchangeAcquire
-
compareAndExchangeRelease
int compareAndExchange(int expectedValue, int newValue)
- 返回旧值
-
weakCompareAndSetPlain
-
weakCompareAndSetVolatile
-
weakCompareAndSetAcquire
-
weakCompareAndSetRelease
代码理解
内部是 volatile int
值,利用 Unsafe
进行 CAS 操作
private volatile int value;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2017-08-22 40个Java集合面试问题和答案
2016-08-22 Java中的toString()方法