Serializable
public class AtomicLongArray extends Object implements Serializable
long
array in which elements may be updated atomically.
See the VarHandle
specification for descriptions of the
properties of atomic accesses.Constructor | Description |
---|---|
AtomicLongArray(int length) |
Creates a new AtomicLongArray of the given length, with all
elements initially zero.
|
AtomicLongArray(long[] array) |
Creates a new AtomicLongArray with the same length as, and
all elements copied from, the given array.
|
Modifier and Type | Method | Description |
---|---|---|
long |
accumulateAndGet(int i,
long x,
LongBinaryOperator accumulatorFunction) |
Atomically updates the element at index
i with the
results of applying the given function to the current and given
values, returning the updated value. |
long |
addAndGet(int i,
long delta) |
Atomically adds the given value to the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
long |
compareAndExchange(int i,
long expectedValue,
long newValue) |
Atomically sets the element at index
i to newValue
if the element's current value, referred to as the witness
value, == expectedValue ,
with memory effects as specified by
VarHandle.compareAndExchange(java.lang.Object...) . |
long |
compareAndExchangeAcquire(int i,
long expectedValue,
long newValue) |
Atomically sets the element at index
i to newValue
if the element's current value, referred to as the witness
value, == expectedValue ,
with memory effects as specified by
VarHandle.compareAndExchangeAcquire(java.lang.Object...) . |
long |
compareAndExchangeRelease(int i,
long expectedValue,
long newValue) |
Atomically sets the element at index
i to newValue
if the element's current value, referred to as the witness
value, == expectedValue ,
with memory effects as specified by
VarHandle.compareAndExchangeRelease(java.lang.Object...) . |
boolean |
compareAndSet(int i,
long expectedValue,
long newValue) |
Atomically sets the element at index
i to newValue
if the element's current value == expectedValue ,
with memory effects as specified by VarHandle.compareAndSet(java.lang.Object...) . |
long |
decrementAndGet(int i) |
Atomically decrements the value of the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
long |
get(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getVolatile(java.lang.Object...) . |
long |
getAcquire(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getAcquire(java.lang.Object...) . |
long |
getAndAccumulate(int i,
long x,
LongBinaryOperator accumulatorFunction) |
Atomically updates the element at index
i with the
results of applying the given function to the current and given
values, returning the previous value. |
long |
getAndAdd(int i,
long delta) |
Atomically adds the given value to the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
long |
getAndDecrement(int i) |
Atomically decrements the value of the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
long |
getAndIncrement(int i) |
Atomically increments the value of the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
long |
getAndSet(int i,
long newValue) |
Atomically sets the element at index
i to
newValue and returns the old value,
with memory effects as specified by VarHandle.getAndSet(java.lang.Object...) . |
long |
getAndUpdate(int i,
LongUnaryOperator updateFunction) |
Atomically updates the element at index
i with the results
of applying the given function, returning the previous value. |
long |
getOpaque(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getOpaque(java.lang.Object...) . |
long |
getPlain(int i) |
Returns the current value of the element at index
i ,
with memory semantics of reading as if the variable was declared
non-volatile . |
long |
incrementAndGet(int i) |
Atomically increments the value of the element at index
i ,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...) . |
void |
lazySet(int i,
long newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...) . |
int |
length() |
Returns the length of the array.
|
void |
set(int i,
long newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setVolatile(java.lang.Object...) . |
void |
setOpaque(int i,
long newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setOpaque(java.lang.Object...) . |
void |
setPlain(int i,
long newValue) |
Sets the element at index
i to newValue ,
with memory semantics of setting as if the variable was
declared non-volatile and non-final . |
void |
setRelease(int i,
long newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...) . |
String |
toString() |
Returns the String representation of the current values of array.
|
long |
updateAndGet(int i,
LongUnaryOperator updateFunction) |
Atomically updates the element at index
i with the results
of applying the given function, returning the updated value. |
boolean |
weakCompareAndSet(int i,
long expectedValue,
long newValue) |
Deprecated.
This method has plain memory effects but the method
name implies volatile memory effects (see methods such as
compareAndExchange(int, long, long) and compareAndSet(int, long, long) ). To avoid
confusion over plain or volatile memory effects it is recommended that
the method weakCompareAndSetPlain(int, long, long) be used instead. |
boolean |
weakCompareAndSetAcquire(int i,
long expectedValue,
long newValue) |
Possibly atomically sets the element at index
i to
newValue if the element's current value == expectedValue ,
with memory effects as specified by
VarHandle.weakCompareAndSetAcquire(java.lang.Object...) . |
boolean |
weakCompareAndSetPlain(int i,
long expectedValue,
long newValue) |
Possibly atomically sets the element at index
i to
newValue if the element's current value == expectedValue ,
with memory effects as specified by VarHandle.weakCompareAndSetPlain(java.lang.Object...) . |
boolean |
weakCompareAndSetRelease(int i,
long expectedValue,
long newValue) |
Possibly atomically sets the element at index
i to
newValue if the element's current value == expectedValue ,
with memory effects as specified by
VarHandle.weakCompareAndSetRelease(java.lang.Object...) . |
boolean |
weakCompareAndSetVolatile(int i,
long expectedValue,
long newValue) |
Possibly atomically sets the element at index
i to
newValue if the element's current value == expectedValue ,
with memory effects as specified by
VarHandle.weakCompareAndSet(java.lang.Object...) . |
public AtomicLongArray(int length)
length
- the length of the arraypublic AtomicLongArray(long[] array)
array
- the array to copy elements fromNullPointerException
- if array is nullpublic final int length()
public final long get(int i)
i
,
with memory effects as specified by VarHandle.getVolatile(java.lang.Object...)
.i
- the indexpublic final void set(int i, long newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setVolatile(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final void lazySet(int i, long newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final long getAndSet(int i, long newValue)
i
to
newValue
and returns the old value,
with memory effects as specified by VarHandle.getAndSet(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final boolean compareAndSet(int i, long expectedValue, long newValue)
i
to newValue
if the element's current value == expectedValue
,
with memory effects as specified by VarHandle.compareAndSet(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successful. False return indicates that
the actual value was not equal to the expected value.@Deprecated(since="9") public final boolean weakCompareAndSet(int i, long expectedValue, long newValue)
compareAndExchange(int, long, long)
and compareAndSet(int, long, long)
). To avoid
confusion over plain or volatile memory effects it is recommended that
the method weakCompareAndSetPlain(int, long, long)
be used instead.i
to
newValue
if the element's current value == expectedValue
,
with memory effects as specified by VarHandle.weakCompareAndSetPlain(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successfulweakCompareAndSetPlain(int, long, long)
public final boolean weakCompareAndSetPlain(int i, long expectedValue, long newValue)
i
to
newValue
if the element's current value == expectedValue
,
with memory effects as specified by VarHandle.weakCompareAndSetPlain(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successfulpublic final long getAndIncrement(int i)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.
Equivalent to getAndAdd(i, 1)
.
i
- the indexpublic final long getAndDecrement(int i)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.
Equivalent to getAndAdd(i, -1)
.
i
- the indexpublic final long getAndAdd(int i, long delta)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.i
- the indexdelta
- the value to addpublic final long incrementAndGet(int i)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.
Equivalent to addAndGet(i, 1)
.
i
- the indexpublic final long decrementAndGet(int i)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.
Equivalent to addAndGet(i, -1)
.
i
- the indexpublic long addAndGet(int i, long delta)
i
,
with memory effects as specified by VarHandle.getAndAdd(java.lang.Object...)
.i
- the indexdelta
- the value to addpublic final long getAndUpdate(int i, LongUnaryOperator updateFunction)
i
with the results
of applying the given function, returning the previous value. The
function should be side-effect-free, since it may be re-applied
when attempted updates fail due to contention among threads.i
- the indexupdateFunction
- a side-effect-free functionpublic final long updateAndGet(int i, LongUnaryOperator updateFunction)
i
with the results
of applying the given function, returning the updated value. The
function should be side-effect-free, since it may be re-applied
when attempted updates fail due to contention among threads.i
- the indexupdateFunction
- a side-effect-free functionpublic final long getAndAccumulate(int i, long x, LongBinaryOperator accumulatorFunction)
i
with the
results of applying the given function to the current and given
values, returning the previous value. The function should be
side-effect-free, since it may be re-applied when attempted
updates fail due to contention among threads. The function is
applied with the current value of the element at index i
as its first argument, and the given update as the second
argument.i
- the indexx
- the update valueaccumulatorFunction
- a side-effect-free function of two argumentspublic final long accumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)
i
with the
results of applying the given function to the current and given
values, returning the updated value. The function should be
side-effect-free, since it may be re-applied when attempted
updates fail due to contention among threads. The function is
applied with the current value of the element at index i
as its first argument, and the given update as the second
argument.i
- the indexx
- the update valueaccumulatorFunction
- a side-effect-free function of two argumentspublic String toString()
public final long getPlain(int i)
i
,
with memory semantics of reading as if the variable was declared
non-volatile
.i
- the indexpublic final void setPlain(int i, long newValue)
i
to newValue
,
with memory semantics of setting as if the variable was
declared non-volatile
and non-final
.i
- the indexnewValue
- the new valuepublic final long getOpaque(int i)
i
,
with memory effects as specified by VarHandle.getOpaque(java.lang.Object...)
.i
- the indexpublic final void setOpaque(int i, long newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setOpaque(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final long getAcquire(int i)
i
,
with memory effects as specified by VarHandle.getAcquire(java.lang.Object...)
.i
- the indexpublic final void setRelease(int i, long newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final long compareAndExchange(int i, long expectedValue, long newValue)
i
to newValue
if the element's current value, referred to as the witness
value, == expectedValue
,
with memory effects as specified by
VarHandle.compareAndExchange(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuepublic final long compareAndExchangeAcquire(int i, long expectedValue, long newValue)
i
to newValue
if the element's current value, referred to as the witness
value, == expectedValue
,
with memory effects as specified by
VarHandle.compareAndExchangeAcquire(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuepublic final long compareAndExchangeRelease(int i, long expectedValue, long newValue)
i
to newValue
if the element's current value, referred to as the witness
value, == expectedValue
,
with memory effects as specified by
VarHandle.compareAndExchangeRelease(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuepublic final boolean weakCompareAndSetVolatile(int i, long expectedValue, long newValue)
i
to
newValue
if the element's current value == expectedValue
,
with memory effects as specified by
VarHandle.weakCompareAndSet(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successfulpublic final boolean weakCompareAndSetAcquire(int i, long expectedValue, long newValue)
i
to
newValue
if the element's current value == expectedValue
,
with memory effects as specified by
VarHandle.weakCompareAndSetAcquire(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successfulpublic final boolean weakCompareAndSetRelease(int i, long expectedValue, long newValue)
i
to
newValue
if the element's current value == expectedValue
,
with memory effects as specified by
VarHandle.weakCompareAndSetRelease(java.lang.Object...)
.i
- the indexexpectedValue
- the expected valuenewValue
- the new valuetrue
if successful Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2017, Oracle and/or its affiliates. 500 Oracle Parkway
Redwood Shores, CA 94065 USA. All rights reserved.
DRAFT 9-internal+0-adhoc.mlchung.jdk9-jdeps