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

public class SynchronizedDouble extends SynchronizedVariable implements Comparable, Cloneable
A class useful for offloading synch for double instance variables.

[ Introduction to this package. ]

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected double
     

    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, Object lock)
    Make a new SynchronizedDouble with the given initial value, and using the supplied lock.
  • Method Summary

    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
     
    int
     
    double
    divide(double factor)
    Divide value by factor (i.e., set value /= factor)
    boolean
    equals(Object other)
     
    final double
    get()
    Return the current value
    int
     
    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
    Atomically swap values with another SynchronizedDouble.
     

    Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable

    execute, getLock

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • 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

      public SynchronizedDouble(double initialValue, Object lock)
      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

      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(Object other)
      Specified by:
      compareTo in interface Comparable
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object