java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicInteger
- 所有已实现的接口:
-
Serializable
一个可以原子方式更新的
int
值。查看VarHandle规范以了解原子访问属性的描述。一个AtomicInteger
用于应用程序,例如原子递增计数器,并且不能用作Integer
的替代品。但是,这个类扩展了Number
,以允许工具和实用程序统一访问基于数字的类。
- 自JDK版本:
- 1.5
- 另请参阅:
-
Constructor Summary
ConstructorDescription创建一个初始值为0
的新AtomicInteger。AtomicInteger
(int initialValue) 创建一个给定初始值的新AtomicInteger。 -
Method Summary
Modifier and TypeMethodDescriptionfinal int
accumulateAndGet
(int x, IntBinaryOperator accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数应用于当前值和给定值的结果,返回更新后的值。final int
addAndGet
(int delta) 原子方式将给定值添加到当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。final int
compareAndExchange
(int expectedValue, int newValue) final int
compareAndExchangeAcquire
(int expectedValue, int newValue) 如果当前值(称为见证值)== 期望值
,则根据VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果,将值设置为newValue
。final int
compareAndExchangeRelease
(int expectedValue, int newValue) 如果当前值(称为见证值)== 期望值
,则根据VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果,将值设置为newValue
。final boolean
compareAndSet
(int expectedValue, int newValue) final int
原子方式递减当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。double
float
final int
get()
返回当前值,使用VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。final int
返回当前值,使用VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。final int
getAndAccumulate
(int x, IntBinaryOperator accumulatorFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数应用于当前值和给定值的结果,返回先前的值。final int
getAndAdd
(int delta) 原子方式将给定值添加到当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。final int
原子方式递减当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。final int
原子方式递增当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。final int
getAndSet
(int newValue) 将值设置为newValue
并返回旧值,使用VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。final int
getAndUpdate
(IntUnaryOperator updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数的结果,返回先前的值。final int
返回当前值,使用VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。final int
getPlain()
返回当前值,读取内存语义,就好像变量声明为非volatile
。final int
原子方式递增当前值,使用VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。int
intValue()
final void
lazySet
(int newValue) 将值设置为newValue
,使用VarHandle.setRelease(java.lang.Object...)
指定的内存效果。long
final void
set
(int newValue) 将值设置为newValue
,使用VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。final void
setOpaque
(int newValue) 将值设置为newValue
,使用VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。final void
setPlain
(int newValue) 将值设置为newValue
,设置内存语义为变量声明为非volatile
和非final
。final void
setRelease
(int newValue) 将值设置为newValue
,使用VarHandle.setRelease(java.lang.Object...)
指定的内存效果。toString()
返回当前值的字符串表示形式。final int
updateAndGet
(IntUnaryOperator updateFunction) 原子方式更新(根据VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数的结果,返回更新后的值。final boolean
weakCompareAndSet
(int expectedValue, int newValue) 已弃用。final boolean
weakCompareAndSetAcquire
(int expectedValue, int newValue) final boolean
weakCompareAndSetPlain
(int expectedValue, int newValue) final boolean
weakCompareAndSetRelease
(int expectedValue, int newValue) final boolean
weakCompareAndSetVolatile
(int expectedValue, int newValue) Methods declared in class java.lang.Number
byteValue, shortValue
-
Constructor Details
-
AtomicInteger
public AtomicInteger(int initialValue) 创建一个给定初始值的新AtomicInteger。- 参数:
-
initialValue
- 初始值
-
AtomicInteger
public AtomicInteger()创建一个初始值为0
的新AtomicInteger。
-
-
Method Details
-
get
public final int get()返回当前值,使用VarHandle.getVolatile(java.lang.Object...)
指定的内存效果。- 返回:
- 当前值
-
set
public final void set(int newValue) 将值设置为newValue
,使用VarHandle.setVolatile(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值
-
lazySet
public final void lazySet(int newValue) 设置值为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自版本:
- 1.6
-
getAndSet
public final int getAndSet(int newValue) 原子地将值设置为newValue
并返回旧值,具有由VarHandle.getAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 返回:
- 先前的值
-
compareAndSet
public final boolean compareAndSet(int expectedValue, int newValue) - 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
。返回false
表示实际值不等于期望值。
-
weakCompareAndSet
Deprecated.This method has plain memory effects but the method name implies volatile memory effects (see methods such ascompareAndExchange(int, int)
andcompareAndSet(int, int)
). To avoid confusion over plain or volatile memory effects it is recommended that the methodweakCompareAndSetPlain(int, int)
be used instead.如果当前值== expectedValue
,则以可能原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 参见:
-
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(int expectedValue, int newValue) 如果当前值== expectedValue
,则以可能原子方式将值设置为newValue
,具有由VarHandle.weakCompareAndSetPlain(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回:
-
如果成功则返回
true
- 自版本:
- 9
-
getAndIncrement
public final int getAndIncrement()原子地增加当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
getAndAdd(1)
。- 返回:
- 先前的值
-
getAndDecrement
public final int getAndDecrement()原子地减少当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
getAndAdd(-1)
。- 返回:
- 先前的值
-
getAndAdd
public final int getAndAdd(int delta) 将给定值添加到当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。- 参数:
-
delta
- 要添加的值 - 返回:
- 先前的值
-
incrementAndGet
public final int incrementAndGet()原子地增加当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
addAndGet(1)
。- 返回:
- 更新后的值
-
decrementAndGet
public final int decrementAndGet()原子地减少当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。等同于
addAndGet(-1)
。- 返回:
- 更新后的值
-
addAndGet
public final int addAndGet(int delta) 将给定值添加到当前值,具有由VarHandle.getAndAdd(java.lang.Object...)
指定的内存效果。- 参数:
-
delta
- 要添加的值 - 返回:
- 更新后的值
-
getAndUpdate
原子地更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数的结果返回先前的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。- 参数:
-
updateFunction
- 无副作用的函数 - 返回:
- 先前的值
- 自版本:
- 1.8
-
updateAndGet
原子地更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用给定函数的结果返回更新后的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。- 参数:
-
updateFunction
- 无副作用的函数 - 返回:
- 更新后的值
- 自版本:
- 1.8
-
getAndAccumulate
原子地更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用将给定函数应用于当前值和给定值的结果返回先前的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。该函数将当前值作为第一个参数,将给定更新作为第二个参数应用。- 参数:
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回:
- 先前的值
- 自版本:
- 1.8
-
accumulateAndGet
原子地更新(具有由VarHandle.compareAndSet(java.lang.Object...)
指定的内存效果)当前值,使用将给定函数应用于当前值和给定值的结果返回更新后的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。该函数将当前值作为第一个参数,将给定更新作为第二个参数应用。- 参数:
-
x
- 更新值 -
accumulatorFunction
- 两个参数的无副作用函数 - 返回:
- 更新后的值
- 自版本:
- 1.8
-
toString
返回当前值的字符串表示形式。 -
intValue
public int intValue() -
longValue
public long longValue()- 指定者:
-
longValue
在类Number
- 返回:
-
转换为
long
类型后此对象表示的数值。 - 参见 Java 语言规范:
-
5.1.2 扩展原始转换
-
floatValue
public float floatValue()- 指定者:
-
floatValue
在类Number
- 返回:
-
转换为
float
类型后此对象表示的数值。 - 参见 Java 语言规范:
-
5.1.2 扩展原始转换
-
doubleValue
public double doubleValue()- 指定者:
-
doubleValue
在类Number
- 返回值:
-
转换为
double
类型后表示的数值。 - 参见 Java 语言规范:
-
5.1.2 扩展原始类型转换
-
getPlain
public final int getPlain()返回当前值,具有读取内存语义,就好像变量被声明为非volatile
。- 返回值:
- 该值
- 自 JDK 版本:
- 9
-
setPlain
public final void setPlain(int newValue) 将值设置为newValue
,具有设置内存语义,就好像变量被声明为非volatile
和非final
。- 参数:
-
newValue
- 新值 - 自 JDK 版本:
- 9
-
getOpaque
public final int getOpaque()返回当前值,具有由VarHandle.getOpaque(java.lang.Object...)
指定的内存效果。- 返回值:
- 该值
- 自 JDK 版本:
- 9
-
setOpaque
public final void setOpaque(int newValue) 将值设置为newValue
,具有由VarHandle.setOpaque(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自 JDK 版本:
- 9
-
getAcquire
public final int getAcquire()返回当前值,具有由VarHandle.getAcquire(java.lang.Object...)
指定的内存效果。- 返回值:
- 该值
- 自 JDK 版本:
- 9
-
setRelease
public final void setRelease(int newValue) 将值设置为newValue
,具有由VarHandle.setRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
newValue
- 新值 - 自 JDK 版本:
- 9
-
compareAndExchange
public final int compareAndExchange(int expectedValue, int newValue) 如果当前值(称为见证值)== expectedValue
,则将值原子地设置为newValue
,具有由VarHandle.compareAndExchange(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
compareAndExchangeAcquire
public final int compareAndExchangeAcquire(int expectedValue, int newValue) 如果当前值(称为见证值)== expectedValue
,则将值原子地设置为newValue
,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
compareAndExchangeRelease
public final int compareAndExchangeRelease(int expectedValue, int newValue) 如果当前值(称为见证值)== expectedValue
,则将值原子地设置为newValue
,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
- 见证值,如果成功将与期望值相同
- 自 JDK 版本:
- 9
-
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int expectedValue, int newValue) 如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSet(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则为
true
- 自 JDK 版本:
- 9
-
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(int expectedValue, int newValue) 如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则为
true
- 自 JDK 版本:
- 9
-
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(int expectedValue, int newValue) 如果当前值== expectedValue
,则可能原子地将值设置为newValue
,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)
指定的内存效果。- 参数:
-
expectedValue
- 期望的值 -
newValue
- 新值 - 返回值:
-
如果成功则为
true
- 自 JDK 版本:
- 9
-
compareAndExchange(int, int)
和compareAndSet(int, int)
等方法)。