java.util.concurrent.atomic

Class AtomicReferenceArray<E>

Implemented Interfaces:
Serializable

public class AtomicReferenceArray<E>
extends Object
implements Serializable

An array of object references in which elements may be updated atomically. See the java.util.concurrent.atomic package specification for description of the properties of atomic variables.
Since:
1.5
See Also:
Serialized Form

Constructor Summary

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

Method Summary

boolean
compareAndSet(int i, E expect, E update)
Atomically sets the element at position i to the given updated value if the current value == the expected value.
E
get(int i)
Gets the current value at position i.
E
getAndSet(int i, E newValue)
Atomically sets the element at position i to the given value and returns the old value.
void
lazySet(int i, E newValue)
Eventually sets the element at position i to the given value.
int
length()
Returns the length of the array.
void
set(int i, E newValue)
Sets the element at position i to the given value.
String
toString()
Returns the String representation of the current values of array.
boolean
weakCompareAndSet(int i, E expect, E update)
Atomically sets the element at position i to the given updated value if the current value == the expected value.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

AtomicReferenceArray

public AtomicReferenceArray(E[] 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

AtomicReferenceArray

public AtomicReferenceArray(int length)
Creates a new AtomicReferenceArray of given length.
Parameters:
length - the length of the array

Method Details

compareAndSet

public final boolean compareAndSet(int i,
                                   E expect,
                                   E update)
Atomically sets the element at position i to the given updated value if the current value == 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 E get(int i)
Gets the current value at position i.
Parameters:
i - the index
Returns:
the current value

getAndSet

public final E getAndSet(int i,
                         E newValue)
Atomically sets the element at position 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,
                          E newValue)
Eventually sets the element at position 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,
                      E newValue)
Sets the element at position 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.
Overrides:
toString in interface Object
Returns:
the String representation of the current values of array.

weakCompareAndSet

public final boolean weakCompareAndSet(int i,
                                       E expect,
                                       E update)
Atomically sets the element at position i to the given updated value if the current value == the expected value. May fail spuriously and does not provide ordering guarantees, so is only rarely an appropriate alternative to compareAndSet.
Parameters:
i - the index
expect - the expected value
update - the new value
Returns:
true if successful.