com.netflix.hystrix.util
Class LongMaxUpdater
java.lang.Object
java.lang.Number
com.netflix.hystrix.util.LongMaxUpdater
- All Implemented Interfaces:
- java.io.Serializable
public class LongMaxUpdater
- extends java.lang.Number
- implements java.io.Serializable
One or more variables that together maintain a running long
maximum with initial value Long.MIN_VALUE. When updates
(method LongMaxUpdater.update(long)) are contended across threads, the set of
variables may grow dynamically to reduce contention. Method LongMaxUpdater.max() (or, equivalently, LongMaxUpdater.longValue()) returns the current
maximum across the variables maintaining updates.
This class extends Number, but does not define
methods such as hashCode and compareTo because
instances are expected to be mutated, and so are not useful as
collection keys.
jsr166e note: This class is targeted to be placed in
java.util.concurrent.atomic
- Since:
- 1.8
- See Also:
- Serialized Form
|
Constructor Summary |
LongMaxUpdater()
Creates a new instance with initial maximum of Long.MIN_VALUE. |
| Methods inherited from class java.lang.Number |
byteValue, shortValue |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
LongMaxUpdater
public LongMaxUpdater()
- Creates a new instance with initial maximum of
Long.MIN_VALUE.
update
public void update(long x)
- Updates the maximum to be at least the given value.
- Parameters:
x - the value to update
max
public long max()
- Returns the current maximum. The returned value is
NOT an atomic snapshot: Invocation in the absence of
concurrent updates returns an accurate result, but concurrent
updates that occur while the value is being calculated might
not be incorporated.
- Returns:
- the maximum
reset
public void reset()
- Resets variables maintaining updates to
Long.MIN_VALUE.
This method may be a useful alternative to creating a new
updater, but is only effective if there are no concurrent
updates. Because this method is intrinsically racy, it should
only be used when it is known that no threads are concurrently
updating.
maxThenReset
public long maxThenReset()
- Equivalent in effect to
LongMaxUpdater.max() followed by LongMaxUpdater.reset(). This method may apply for example during quiescent
points between multithreaded computations. If there are
updates concurrent with this method, the returned value is
not guaranteed to be the final value occurring before
the reset.
- Returns:
- the maximum
toString
public java.lang.String toString()
- Returns the String representation of the
LongMaxUpdater.max().
- Overrides:
toString in class java.lang.Object
- Returns:
- the String representation of the
LongMaxUpdater.max()
longValue
public long longValue()
- Equivalent to
LongMaxUpdater.max().
- Specified by:
longValue in class java.lang.Number
- Returns:
- the maximum
intValue
public int intValue()
- Returns the
LongMaxUpdater.max() as an int after a narrowing
primitive conversion.
- Specified by:
intValue in class java.lang.Number
floatValue
public float floatValue()
- Returns the
LongMaxUpdater.max() as a float
after a widening primitive conversion.
- Specified by:
floatValue in class java.lang.Number
doubleValue
public double doubleValue()
- Returns the
LongMaxUpdater.max() as a double after a widening
primitive conversion.
- Specified by:
doubleValue in class java.lang.Number