Most visited

Recently visited

Added in API level 1

AtomicLongFieldUpdater

public abstract class AtomicLongFieldUpdater
extends Object

java.lang.Object
   ↳ java.util.concurrent.atomic.AtomicLongFieldUpdater<T>


基于反射的实用程序,可以将原子更新指定为指定类的指定volatile long字段。 此类专用于原子数据结构,其中同一节点的多个字段独立进行原子更新。

请注意,该类中的compareAndSet方法的保证比其他原子类中的方法更弱。 由于该类无法确保该字段的所有用途都适用于原子访问,因此它只能保证在同一更新程序上的其他调用compareAndSetset原子性。

Summary

Protected constructors

AtomicLongFieldUpdater()

受保护的无所事事的构造函数供子类使用。

Public methods

final long accumulateAndGet(T obj, long x, LongBinaryOperator accumulatorFunction)

使用给定函数应用于当前值和给定值的结果,原子更新由此更新程序管理的给定对象的字段,并返回更新后的值。

long addAndGet(T obj, long delta)

以原子方式将给定值添加到由此更新程序管理的给定对象的字段的当前值。

abstract boolean compareAndSet(T obj, long expect, long update)

如果当前值 ==为预期值, ==原子方式将由此更新程序管理的给定对象的字段设置为给定的更新值。

long decrementAndGet(T obj)

按原子法递减由此更新程序管理的给定对象的字段的当前值。

abstract long get(T obj)

获取由此更新器管理的给定对象的字段中保存的当前值。

final long getAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)

使用给定函数应用到当前值和给定值的结果,原子地更新由此更新程序管理的给定对象的字段,并返回以前的值。

long getAndAdd(T obj, long delta)

以原子方式将给定值添加到由此更新程序管理的给定对象的字段的当前值。

long getAndDecrement(T obj)

按原子法递减由此更新程序管理的给定对象的字段的当前值。

long getAndIncrement(T obj)

以原子为单位递增由此更新程序管理的给定对象的字段的当前值。

long getAndSet(T obj, long newValue)

以原子方式将由此更新程序管理的给定对象的字段设置为给定值并返回旧值。

final long getAndUpdate(T obj, LongUnaryOperator updateFunction)

使用给定函数的结果原子更新由此更新程序管理的给定对象的字段,并返回以前的值。

long incrementAndGet(T obj)

以原子为单位递增由此更新程序管理的给定对象的字段的当前值。

abstract void lazySet(T obj, long newValue)

最终将由此更新程序管理的给定对象的字段设置为给定的更新值。

static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)

创建并返回具有给定字段的对象的更新程序。

abstract void set(T obj, long newValue)

将由此更新程序管理的给定对象的字段设置为给定的更新值。

final long updateAndGet(T obj, LongUnaryOperator updateFunction)

使用给定函数的结果原子更新由此更新程序管理的给定对象的字段,并返回更新后的值。

abstract boolean weakCompareAndSet(T obj, long expect, long update)

如果当前值 ==为期望值,则将由此更新程序管理的给定对象的字段以原子方式设置为给定的更新值。

Inherited methods

From class java.lang.Object

Protected constructors

AtomicLongFieldUpdater

Added in API level 1
AtomicLongFieldUpdater ()

受保护的无所事事的构造函数供子类使用。

Public methods

accumulateAndGet

Added in API level 24
long accumulateAndGet (T obj, 
                long x, 
                LongBinaryOperator accumulatorFunction)

使用给定函数应用于当前值和给定值的结果,原子更新由此更新程序管理的给定对象的字段,并返回更新后的值。 该函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时,它可能会被重新应用。 该函数以当前值作为第一个参数,给定更新作为第二个参数应用。

Parameters
obj T: An object whose field to get and set
x long: the update value
accumulatorFunction LongBinaryOperator: a side-effect-free function of two arguments
Returns
long the updated value

addAndGet

Added in API level 1
long addAndGet (T obj, 
                long delta)

以原子方式将给定值添加到由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
delta long: the value to add
Returns
long the updated value

compareAndSet

Added in API level 1
boolean compareAndSet (T obj, 
                long expect, 
                long update)

如果当前值为== ,则以原子方式将由此更新程序管理的给定对象的字段设置为给定的更新值。 这种方法对于其他compareAndSetset调用是保证原子的,但不一定与该领域的其他变化有关。

Parameters
obj T: An object whose field to conditionally set
expect long: the expected value
update long: the new value
Returns
boolean true if successful
Throws
ClassCastException if obj is not an instance of the class possessing the field established in the constructor

decrementAndGet

Added in API level 1
long decrementAndGet (T obj)

按原子法递减由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
Returns
long the updated value

get

Added in API level 1
long get (T obj)

获取由此更新器管理的给定对象的字段中保存的当前值。

Parameters
obj T: An object whose field to get
Returns
long the current value

getAndAccumulate

Added in API level 24
long getAndAccumulate (T obj, 
                long x, 
                LongBinaryOperator accumulatorFunction)

使用给定函数应用到当前值和给定值的结果,原子地更新由此更新程序管理的给定对象的字段,并返回以前的值。 该函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时,它可能会被重新应用。 该函数以当前值作为第一个参数,给定更新作为第二个参数应用。

Parameters
obj T: An object whose field to get and set
x long: the update value
accumulatorFunction LongBinaryOperator: a side-effect-free function of two arguments
Returns
long the previous value

getAndAdd

Added in API level 1
long getAndAdd (T obj, 
                long delta)

以原子方式将给定值添加到由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
delta long: the value to add
Returns
long the previous value

getAndDecrement

Added in API level 1
long getAndDecrement (T obj)

按原子法递减由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
Returns
long the previous value

getAndIncrement

Added in API level 1
long getAndIncrement (T obj)

以原子为单位递增由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
Returns
long the previous value

getAndSet

Added in API level 1
long getAndSet (T obj, 
                long newValue)

以原子方式将由此更新程序管理的给定对象的字段设置为给定值并返回旧值。

Parameters
obj T: An object whose field to get and set
newValue long: the new value
Returns
long the previous value

getAndUpdate

Added in API level 24
long getAndUpdate (T obj, 
                LongUnaryOperator updateFunction)

使用给定函数的结果原子更新由此更新程序管理的给定对象的字段,并返回以前的值。 该函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时,它可能会被重新应用。

Parameters
obj T: An object whose field to get and set
updateFunction LongUnaryOperator: a side-effect-free function
Returns
long the previous value

incrementAndGet

Added in API level 1
long incrementAndGet (T obj)

以原子为单位递增由此更新程序管理的给定对象的字段的当前值。

Parameters
obj T: An object whose field to get and set
Returns
long the updated value

lazySet

Added in API level 9
void lazySet (T obj, 
                long newValue)

最终将由此更新程序管理的给定对象的字段设置为给定的更新值。

Parameters
obj T: An object whose field to set
newValue long: the new value

newUpdater

Added in API level 1
AtomicLongFieldUpdater<U> newUpdater (Class<U> tclass, 
                String fieldName)

创建并返回具有给定字段的对象的更新程序。 需要Class参数来检查反射类型和泛型类型是否匹配。

Parameters
tclass Class: the class of the objects holding the field
fieldName String: the name of the field to be updated
Returns
AtomicLongFieldUpdater<U> the updater
Throws
IllegalArgumentException if the field is not a volatile long type
RuntimeException with a nested reflection-based exception if the class does not hold field or is the wrong type, or the field is inaccessible to the caller according to Java language access control

set

Added in API level 1
void set (T obj, 
                long newValue)

将由此更新程序管理的给定对象的字段设置为给定的更新值。 此操作保证充当对后续调用compareAndSet的不稳定存储。

Parameters
obj T: An object whose field to set
newValue long: the new value

updateAndGet

Added in API level 24
long updateAndGet (T obj, 
                LongUnaryOperator updateFunction)

使用给定函数的结果原子更新由此更新程序管理的给定对象的字段,并返回更新后的值。 该函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时,它可能会被重新应用。

Parameters
obj T: An object whose field to get and set
updateFunction LongUnaryOperator: a side-effect-free function
Returns
long the updated value

weakCompareAndSet

Added in API level 1
boolean weakCompareAndSet (T obj, 
                long expect, 
                long update)

如果当前值==是期望值,则将由此更新程序管理的给定对象的字段以原子方式设置为给定的更新值。 相对于其他对compareAndSetset调用,此方法保证为原子,但不一定与该字段中的其他更改有关。

May fail spuriously and does not provide ordering guarantees ,所以只是 compareAndSet一个 compareAndSet

Parameters
obj T: An object whose field to conditionally set
expect long: the expected value
update long: the new value
Returns
boolean true if successful
Throws
ClassCastException if obj is not an instance of the class possessing the field established in the constructor

Hooray!