@IsDerivedFrom(value=java.util.concurrent.atomic.AtomicLong.class) public class ContendedLong extends Object
AtomicLong
, except uses padding to reduce cache contention (aka false-sharing)
with writes to nearby memory locations.Constructor and Description |
---|
ContendedLong()
Creates a new
ContendedLong with initial value 0 . |
ContendedLong(long initialValue)
Creates a new
ContendedLong with the given initial value. |
Modifier and Type | Method and Description |
---|---|
long |
accumulateAndGet(long x,
LongBinaryOperator accumulatorFunction)
Atomically updates the current value with the results of applying the given function to the
current and given values, returning the updated value.
|
long |
addAndGet(long delta)
Atomically adds the given value to the current value.
|
boolean |
compareAndSet(long expect,
long update)
Atomically sets the value to the given updated value if the current value
== the
expected value. |
long |
decrementAndGet()
Atomically decrements by one the current value.
|
long |
get()
Gets the current value.
|
long |
getAndAccumulate(long x,
LongBinaryOperator accumulatorFunction)
Atomically updates the current value with the results of applying the given function to the
current and given values, returning the previous value.
|
long |
getAndAdd(long delta)
Atomically adds the given value to the current value.
|
long |
getAndDecrement()
Atomically decrements by one the current value.
|
long |
getAndIncrement()
Atomically increments by one the current value.
|
long |
getAndSet(long newValue)
Atomically sets to the given value and returns the old value.
|
long |
getAndUpdate(LongUnaryOperator updateFunction)
Atomically updates the current value with the results of applying the given function,
returning the previous value.
|
long |
incrementAndGet()
Atomically increments by one the current value.
|
void |
lazySet(long newValue)
Eventually sets to the given value.
|
void |
set(long newValue)
Sets to the given value.
|
String |
toString()
Returns the String representation of the current value.
|
long |
updateAndGet(LongUnaryOperator updateFunction)
Atomically updates the current value with the results of applying the given function,
returning the updated value.
|
boolean |
weakCompareAndSet(long expect,
long update)
Atomically sets the value to the given updated value if the current value
== the
expected value. |
public ContendedLong(long initialValue)
ContendedLong
with the given initial value.initialValue
- the initial valuepublic ContendedLong()
ContendedLong
with initial value 0
.public final long get()
public final void set(long newValue)
newValue
- the new valuepublic final void lazySet(long newValue)
newValue
- the new valuepublic final long getAndSet(long newValue)
newValue
- the new valuepublic final boolean compareAndSet(long expect, long update)
==
the
expected value.expect
- the expected valueupdate
- the new valuetrue
if successful. False return indicates that the actual value was not equal
to the expected value.public final boolean weakCompareAndSet(long expect, long update)
==
the
expected value.expect
- the expected valueupdate
- the new valuetrue
if successfulAtomicLong.weakCompareAndSet(long, long)
public final long getAndIncrement()
public final long getAndDecrement()
public final long getAndAdd(long delta)
delta
- the value to addpublic final long incrementAndGet()
public final long decrementAndGet()
public final long addAndGet(long delta)
delta
- the value to addpublic final long getAndUpdate(LongUnaryOperator updateFunction)
updateFunction
- a side-effect-free functionpublic final long updateAndGet(LongUnaryOperator updateFunction)
updateFunction
- a side-effect-free functionpublic final long getAndAccumulate(long x, LongBinaryOperator accumulatorFunction)
x
- the update valueaccumulatorFunction
- a side-effect-free function of two argumentspublic final long accumulateAndGet(long x, LongBinaryOperator accumulatorFunction)
x
- the update valueaccumulatorFunction
- a side-effect-free function of two arguments