Class ForkNumberBucket


  • public final class ForkNumberBucket
    extends java.lang.Object
    A bucket from which fork numbers can be drawn. Any drawn number needs to be returned to the bucket, in order to keep the range of provided values delivered as small as possible.
    • Field Detail

      • qFree

        private final java.util.Queue<java.lang.Integer> qFree
      • highWaterMark

        private final java.util.concurrent.atomic.AtomicInteger highWaterMark
    • Constructor Detail

      • ForkNumberBucket

        private ForkNumberBucket()
        Non-public constructor
    • Method Detail

      • drawNumber

        public static int drawNumber()
        Returns:
        a fork number that is not currently in use. The value must be returned to the bucket using returnNumber(int).
      • returnNumber

        public static void returnNumber​(int number)
        Parameters:
        number - the number to return to the bucket so that it can be reused.
      • getInstance

        private static ForkNumberBucket getInstance()
        Returns:
        a singleton instance
      • drawNumberInternal

        private int drawNumberInternal()
        Returns:
        a fork number that is not currently in use. The value must be returned to the bucket using returnNumber(int).
      • getHighestDrawnNumber

        private int getHighestDrawnNumber()
        Returns:
        the highest number that has been drawn
      • returnNumberInternal

        private void returnNumberInternal​(int number)
        Parameters:
        number - the number to return to the bucket so that it can be reused.