Class SynchronizedDouble

    • Field Detail

      • value_

        protected double value_
    • 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,
                                  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)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object