E
- The base class of elements held in this arraySerializable
public class AtomicReferenceArray<E> extends Object implements Serializable
VarHandle
specification for
descriptions of the properties of atomic accesses.Constructor | Description |
---|---|
AtomicReferenceArray(int length) |
Creates a new AtomicReferenceArray of the given length, with all
elements initially null.
|
AtomicReferenceArray(E[] array) |
Creates a new AtomicReferenceArray with the same length as, and
all elements copied from, the given array.
|
Modifier and Type | Method | Description |
---|---|---|
E |
accumulateAndGet(int i,
E x,
BinaryOperator<E> 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. |
E |
compareAndExchange(int i,
E expectedValue,
E 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...) . |
E |
compareAndExchangeAcquire(int i,
E expectedValue,
E 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...) . |
E |
compareAndExchangeRelease(int i,
E expectedValue,
E 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,
E expectedValue,
E 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...) . |
E |
get(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getVolatile(java.lang.Object...) . |
E |
getAcquire(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getAcquire(java.lang.Object...) . |
E |
getAndAccumulate(int i,
E x,
BinaryOperator<E> 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. |
E |
getAndSet(int i,
E 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...) . |
E |
getAndUpdate(int i,
UnaryOperator<E> updateFunction) |
Atomically updates the element at index
i with the results
of applying the given function, returning the previous value. |
E |
getOpaque(int i) |
Returns the current value of the element at index
i ,
with memory effects as specified by VarHandle.getOpaque(java.lang.Object...) . |
E |
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 . |
void |
lazySet(int i,
E 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,
E newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setVolatile(java.lang.Object...) . |
void |
setOpaque(int i,
E newValue) |
Sets the element at index
i to newValue ,
with memory effects as specified by VarHandle.setOpaque(java.lang.Object...) . |
void |
setPlain(int i,
E 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,
E 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.
|
E |
updateAndGet(int i,
UnaryOperator<E> updateFunction) |
Atomically updates the element at index
i with the results
of applying the given function, returning the updated value. |
boolean |
weakCompareAndSet(int i,
E expectedValue,
E newValue) |
Deprecated.
This method has plain memory effects but the method
name implies volatile memory effects (see methods such as
compareAndExchange(int, E, E) and compareAndSet(int, E, E) ). To avoid
confusion over plain or volatile memory effects it is recommended that
the method weakCompareAndSetPlain(int, E, E) be used instead. |
boolean |
weakCompareAndSetAcquire(int i,
E expectedValue,
E 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,
E expectedValue,
E 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,
E expectedValue,
E 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,
E expectedValue,
E 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 AtomicReferenceArray(int length)
length
- the length of the arraypublic AtomicReferenceArray(E[] array)
array
- the array to copy elements fromNullPointerException
- if array is nullpublic final int length()
public final E get(int i)
i
,
with memory effects as specified by VarHandle.getVolatile(java.lang.Object...)
.i
- the indexpublic final void set(int i, E 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, E newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final E getAndSet(int i, E 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, E expectedValue, E 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, E expectedValue, E newValue)
compareAndExchange(int, E, E)
and compareAndSet(int, E, E)
). To avoid
confusion over plain or volatile memory effects it is recommended that
the method weakCompareAndSetPlain(int, E, E)
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, E, E)
public final boolean weakCompareAndSetPlain(int i, E expectedValue, E 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 E getAndUpdate(int i, UnaryOperator<E> 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 E updateAndGet(int i, UnaryOperator<E> 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 E getAndAccumulate(int i, E x, BinaryOperator<E> 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 E accumulateAndGet(int i, E x, BinaryOperator<E> 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 E 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, E 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 E getOpaque(int i)
i
,
with memory effects as specified by VarHandle.getOpaque(java.lang.Object...)
.i
- the indexpublic final void setOpaque(int i, E newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setOpaque(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final E getAcquire(int i)
i
,
with memory effects as specified by VarHandle.getAcquire(java.lang.Object...)
.i
- the indexpublic final void setRelease(int i, E newValue)
i
to newValue
,
with memory effects as specified by VarHandle.setRelease(java.lang.Object...)
.i
- the indexnewValue
- the new valuepublic final E compareAndExchange(int i, E expectedValue, E 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 E compareAndExchangeAcquire(int i, E expectedValue, E 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 E compareAndExchangeRelease(int i, E expectedValue, E 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, E expectedValue, E 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, E expectedValue, E 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, E expectedValue, E 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