Package EDU.oswego.cs.dl.util.concurrent
Class SynchronizedDouble
java.lang.Object
EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
EDU.oswego.cs.dl.util.concurrent.SynchronizedDouble
- All Implemented Interfaces:
Executor
,Cloneable
,Comparable
- Direct Known Subclasses:
WaitableDouble
A class useful for offloading synch for double instance variables.
-
Field Summary
FieldsFields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
lock_
-
Constructor Summary
ConstructorsConstructorDescriptionSynchronizedDouble
(double initialValue) Make a new SynchronizedDouble with the given initial value, and using its own internal lock.SynchronizedDouble
(double initialValue, Object lock) Make a new SynchronizedDouble with the given initial value, and using the supplied lock. -
Method Summary
Modifier and TypeMethodDescriptiondouble
add
(double amount) Add amount to value (i.e., set value += amount)boolean
commit
(double assumedValue, double newValue) Set value to newValue only if it is currently assumedValue.int
compareTo
(double other) int
compareTo
(SynchronizedDouble other) int
double
divide
(double factor) Divide value by factor (i.e., set value /= factor)boolean
final double
get()
Return the current valueint
hashCode()
double
multiply
(double factor) Multiply value by factor (i.e., set value *= factor)double
set
(double newValue) Set to newValue.double
subtract
(double amount) Subtract amount from value (i.e., set value -= amount)double
swap
(SynchronizedDouble other) Atomically swap values with another SynchronizedDouble.toString()
Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
execute, getLock
-
Field Details
-
value_
protected double value_
-
-
Constructor Details
-
SynchronizedDouble
public SynchronizedDouble(double initialValue) Make a new SynchronizedDouble with the given initial value, and using its own internal lock. -
SynchronizedDouble
Make a new SynchronizedDouble with the given initial value, and using the supplied lock.
-
-
Method Details
-
get
public final double get()Return the current value -
set
public double set(double newValue) Set to newValue.- Returns:
- the old value
-
commit
public boolean commit(double assumedValue, double newValue) Set value to newValue only if it is currently assumedValue.- Returns:
- true if successful
-
swap
Atomically swap values with another SynchronizedDouble. Uses identityHashCode to avoid deadlock when two SynchronizedDoubles 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.)- Returns:
- the new value
-
add
public double add(double amount) Add amount to value (i.e., set value += amount)- Returns:
- the new value
-
subtract
public double subtract(double amount) Subtract amount from value (i.e., set value -= amount)- Returns:
- the new value
-
multiply
public double multiply(double factor) Multiply value by factor (i.e., set value *= factor)- Returns:
- the new value
-
divide
public double divide(double factor) Divide value by factor (i.e., set value /= factor)- Returns:
- the new value
-
compareTo
public int compareTo(double other) -
compareTo
-
compareTo
- Specified by:
compareTo
in interfaceComparable
-
equals
-
hashCode
public int hashCode() -
toString
-