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) |
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 |
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 |
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.public final boolean weakCompareAndSet(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, 2016, Oracle and/or its affiliates. All rights reserved.
DRAFT 9-internal+0-2016-10-04-161205.jjg.dev.8159855.tools-spi