edu.emory.mathcs.backport.java.util.concurrent.atomic

Class AtomicReferenceArray

public class AtomicReferenceArray extends Object implements Serializable

An array of object references in which elements may be updated atomically. See the edu.emory.mathcs.backport.java.util.concurrent.atomic package specification for description of the properties of atomic variables.

Since: 1.5

Author: Doug Lea

Constructor Summary
AtomicReferenceArray(int length)
Creates a new AtomicReferenceArray of given length.
AtomicReferenceArray(Object[] array)
Creates a new AtomicReferenceArray with the same length as, and all elements copied from, the given array.
Method Summary
booleancompareAndSet(int i, Object expect, Object update)
Atomically sets the element at position {@code i} to the given updated value if the current value {@code ==} the expected value.
Objectget(int i)
Gets the current value at position {@code i}.
ObjectgetAndSet(int i, Object newValue)
Atomically sets the element at position {@code i} to the given value and returns the old value.
voidlazySet(int i, Object newValue)
Eventually sets the element at position {@code i} to the given value.
intlength()
Returns the length of the array.
voidset(int i, Object newValue)
Sets the element at position {@code i} to the given value.
StringtoString()
Returns the String representation of the current values of array.
booleanweakCompareAndSet(int i, Object expect, Object update)
Atomically sets the element at position {@code i} to the given updated value if the current value {@code ==} the expected value.

Constructor Detail

AtomicReferenceArray

public AtomicReferenceArray(int length)
Creates a new AtomicReferenceArray of given length.

Parameters: length the length of the array

AtomicReferenceArray

public AtomicReferenceArray(Object[] array)
Creates a new AtomicReferenceArray with the same length as, and all elements copied from, the given array.

Parameters: array the array to copy elements from

Throws: NullPointerException if array is null

Method Detail

compareAndSet

public final boolean compareAndSet(int i, Object expect, Object update)
Atomically sets the element at position {@code i} to the given updated value if the current value {@code ==} the expected value.

Parameters: i the index expect the expected value update the new value

Returns: true if successful. False return indicates that the actual value was not equal to the expected value.

get

public final Object get(int i)
Gets the current value at position {@code i}.

Parameters: i the index

Returns: the current value

getAndSet

public final Object getAndSet(int i, Object newValue)
Atomically sets the element at position {@code i} to the given value and returns the old value.

Parameters: i the index newValue the new value

Returns: the previous value

lazySet

public final void lazySet(int i, Object newValue)
Eventually sets the element at position {@code i} to the given value.

Parameters: i the index newValue the new value

Since: 1.6

length

public final int length()
Returns the length of the array.

Returns: the length of the array

set

public final void set(int i, Object newValue)
Sets the element at position {@code i} to the given value.

Parameters: i the index newValue the new value

toString

public String toString()
Returns the String representation of the current values of array.

Returns: the String representation of the current values of array.

weakCompareAndSet

public final boolean weakCompareAndSet(int i, Object expect, Object update)
Atomically sets the element at position {@code i} to the given updated value if the current value {@code ==} the expected value.

May fail spuriously and does not provide ordering guarantees, so is only rarely an appropriate alternative to {@code compareAndSet}.

Parameters: i the index expect the expected value update the new value

Returns: true if successful.