EDU.oswego.cs.dl.util.concurrent
Class SynchronizedRef
- Executor
public class SynchronizedRef
A simple class maintaining a single reference variable that
is always accessed and updated under synchronization.
[
Introduction to this package. ]
protected Object | value_ - The maintained reference *
|
SynchronizedRef(Object initialValue) - Create a SynchronizedRef initially holding the given reference
and using its own internal lock.
|
SynchronizedRef(Object initialValue, Object lock) - Make a new SynchronizedRef with the given initial value,
and using the supplied lock.
|
boolean | commit(Object assumedValue, Object newValue) - Set value to newValue only if it is currently assumedValue.
|
Object | get() - Return the current value
|
Object | set(Object newValue) - Set to newValue.
|
Object | swap(SynchronizedRef other) - Atomically swap values with another SynchronizedRef.
|
value_
protected Object value_
The maintained reference *
SynchronizedRef
public SynchronizedRef(Object initialValue)
Create a SynchronizedRef initially holding the given reference
and using its own internal lock.
SynchronizedRef
public SynchronizedRef(Object initialValue,
Object lock)
Make a new SynchronizedRef with the given initial value,
and using the supplied lock.
commit
public boolean commit(Object assumedValue,
Object newValue)
Set value to newValue only if it is currently assumedValue.
- true if successful
get
public final Object get()
Return the current value
set
public Object set(Object newValue)
Set to newValue.
- the old value
swap
public Object swap(SynchronizedRef other)
Atomically swap values with another SynchronizedRef.
Uses identityHashCode to avoid deadlock when
two SynchronizedRefs attempt to simultaneously swap with each other.
(Note: Ordering via identyHashCode is not strictly guaranteed
by the language specification to return unique, orderable
values, but in practice JVMs rely on them being unique.)
- the new value