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
,java.lang.Cloneable
,java.lang.Comparable
- Direct Known Subclasses:
WaitableDouble
public class SynchronizedDouble extends SynchronizedVariable implements java.lang.Comparable, java.lang.Cloneable
A class useful for offloading synch for double instance variables.
-
-
Field Summary
Fields Modifier and Type Field Description protected double
value_
-
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
lock_
-
-
Constructor Summary
Constructors Constructor Description SynchronizedDouble(double initialValue)
Make a new SynchronizedDouble with the given initial value, and using its own internal lock.SynchronizedDouble(double initialValue, java.lang.Object lock)
Make a new SynchronizedDouble with the given initial value, and using the supplied lock.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
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
compareTo(java.lang.Object other)
double
divide(double factor)
Divide value by factor (i.e., set value /= factor)boolean
equals(java.lang.Object other)
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.java.lang.String
toString()
-
Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
execute, getLock
-
-
-
-
Constructor Detail
-
SynchronizedDouble
public SynchronizedDouble(double initialValue)
Make a new SynchronizedDouble with the given initial value, and using its own internal lock.
-
SynchronizedDouble
public SynchronizedDouble(double initialValue, java.lang.Object lock)
Make a new SynchronizedDouble with the given initial value, and using the supplied lock.
-
-
Method Detail
-
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
public double swap(SynchronizedDouble other)
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
public int compareTo(SynchronizedDouble other)
-
compareTo
public int compareTo(java.lang.Object other)
- Specified by:
compareTo
in interfacejava.lang.Comparable
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-