Class AtomicBiInteger

  • All Implemented Interfaces:
    java.io.Serializable

    public class AtomicBiInteger
    extends java.util.concurrent.atomic.AtomicLong
    An AtomicLong with additional methods to treat it as two hi/lo integers.
    See Also:
    Serialized Form
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int deltaHi, int deltaLo)
      Atomically adds the given deltas to the current hi and lo values.
      int addAndGetHi​(int delta)
      Atomically adds the given delta to the current hi value, returning the updated hi value.
      int addAndGetLo​(int delta)
      Atomically adds the given delta to the current lo value, returning the updated lo value.
      boolean compareAndSet​(int expectHi, int hi, int expectLo, int lo)
      Atomically sets the hi and lo values to the given updated values only if the current hi and lo values == the expected hi and lo values.
      boolean compareAndSet​(long encoded, int hi, int lo)
      Atomically sets the values to the given updated values only if the current encoded value == the expected encoded value.
      boolean compareAndSetHi​(int expectHi, int hi)
      Atomically sets the hi value to the given updated value only if the current value == the expected value.
      boolean compareAndSetLo​(int expectLo, int lo)
      Atomically sets the lo value to the given updated value only if the current value == the expected value.
      static long encode​(int hi, int lo)
      Encodes hi and lo values into a long.
      static long encodeHi​(long encoded, int hi)
      Sets the hi value into the given encoded value.
      static long encodeLo​(long encoded, int lo)
      Sets the lo value into the given encoded value.
      int getAndSetHi​(int hi)
      Atomically sets the hi value without changing the lo value.
      int getAndSetLo​(int lo)
      Atomically sets the lo value without changing the hi value.
      int getHi()  
      static int getHi​(long encoded)
      Gets a hi value from the given encoded value.
      int getLo()  
      static int getLo​(long encoded)
      Gets a lo value from the given encoded value.
      void set​(int hi, int lo)
      Sets the hi and lo values.
      • Methods inherited from class java.util.concurrent.atomic.AtomicLong

        accumulateAndGet, addAndGet, compareAndSet, decrementAndGet, doubleValue, floatValue, get, getAndAccumulate, getAndAdd, getAndDecrement, getAndIncrement, getAndSet, getAndUpdate, incrementAndGet, intValue, lazySet, longValue, set, toString, updateAndGet, weakCompareAndSet
      • 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
    • Constructor Detail

      • AtomicBiInteger

        public AtomicBiInteger()
      • AtomicBiInteger

        public AtomicBiInteger​(long encoded)
      • AtomicBiInteger

        public AtomicBiInteger​(int hi,
                               int lo)
    • Method Detail

      • getHi

        public int getHi()
        Returns:
        the hi value
      • getLo

        public int getLo()
        Returns:
        the lo value
      • getAndSetHi

        public int getAndSetHi​(int hi)
        Atomically sets the hi value without changing the lo value.
        Parameters:
        hi - the new hi value
        Returns:
        the previous hi value
      • getAndSetLo

        public int getAndSetLo​(int lo)
        Atomically sets the lo value without changing the hi value.
        Parameters:
        lo - the new lo value
        Returns:
        the previous lo value
      • set

        public void set​(int hi,
                        int lo)
        Sets the hi and lo values.
        Parameters:
        hi - the new hi value
        lo - the new lo value
      • compareAndSetHi

        public boolean compareAndSetHi​(int expectHi,
                                       int hi)

        Atomically sets the hi value to the given updated value only if the current value == the expected value.

        Concurrent changes to the lo value result in a retry.

        Parameters:
        expectHi - the expected hi value
        hi - the new hi value
        Returns:
        true if successful. False return indicates that the actual hi value was not equal to the expected hi value.
      • compareAndSetLo

        public boolean compareAndSetLo​(int expectLo,
                                       int lo)

        Atomically sets the lo value to the given updated value only if the current value == the expected value.

        Concurrent changes to the hi value result in a retry.

        Parameters:
        expectLo - the expected lo value
        lo - the new lo value
        Returns:
        true if successful. False return indicates that the actual lo value was not equal to the expected lo value.
      • compareAndSet

        public boolean compareAndSet​(long encoded,
                                     int hi,
                                     int lo)
        Atomically sets the values to the given updated values only if the current encoded value == the expected encoded value.
        Parameters:
        encoded - the expected encoded value
        hi - the new hi value
        lo - the new lo value
        Returns:
        true if successful. False return indicates that the actual encoded value was not equal to the expected encoded value.
      • compareAndSet

        public boolean compareAndSet​(int expectHi,
                                     int hi,
                                     int expectLo,
                                     int lo)
        Atomically sets the hi and lo values to the given updated values only if the current hi and lo values == the expected hi and lo values.
        Parameters:
        expectHi - the expected hi value
        hi - the new hi value
        expectLo - the expected lo value
        lo - the new lo value
        Returns:
        true if successful. False return indicates that the actual hi and lo values were not equal to the expected hi and lo value.
      • addAndGetHi

        public int addAndGetHi​(int delta)
        Atomically adds the given delta to the current hi value, returning the updated hi value.
        Parameters:
        delta - the delta to apply
        Returns:
        the updated hi value
      • addAndGetLo

        public int addAndGetLo​(int delta)
        Atomically adds the given delta to the current lo value, returning the updated lo value.
        Parameters:
        delta - the delta to apply
        Returns:
        the updated lo value
      • add

        public void add​(int deltaHi,
                        int deltaLo)
        Atomically adds the given deltas to the current hi and lo values.
        Parameters:
        deltaHi - the delta to apply to the hi value
        deltaLo - the delta to apply to the lo value
      • getHi

        public static int getHi​(long encoded)
        Gets a hi value from the given encoded value.
        Parameters:
        encoded - the encoded value
        Returns:
        the hi value
      • getLo

        public static int getLo​(long encoded)
        Gets a lo value from the given encoded value.
        Parameters:
        encoded - the encoded value
        Returns:
        the lo value
      • encode

        public static long encode​(int hi,
                                  int lo)
        Encodes hi and lo values into a long.
        Parameters:
        hi - the hi value
        lo - the lo value
        Returns:
        the encoded value
      • encodeHi

        public static long encodeHi​(long encoded,
                                    int hi)
        Sets the hi value into the given encoded value.
        Parameters:
        encoded - the encoded value
        hi - the hi value
        Returns:
        the new encoded value
      • encodeLo

        public static long encodeLo​(long encoded,
                                    int lo)
        Sets the lo value into the given encoded value.
        Parameters:
        encoded - the encoded value
        lo - the lo value
        Returns:
        the new encoded value