Class FibonacciPollInterval

  • All Implemented Interfaces:
    PollInterval

    public class FibonacciPollInterval
    extends java.lang.Object
    implements PollInterval
    Generates a non-linear poll interval based on the fibonacci sequence: [0, 1, 1, 2, 3, 5, 8, 13, ..]
    • Field Detail

      • unit

        private final java.util.concurrent.TimeUnit unit
      • offset

        private final int offset
    • Constructor Detail

      • FibonacciPollInterval

        public FibonacciPollInterval()
        Create an instance of the FibonacciPollInterval with the time unit of TimeUnit.MILLISECONDS.
      • FibonacciPollInterval

        public FibonacciPollInterval​(int offset,
                                     java.util.concurrent.TimeUnit unit)
        Create an instance of the FibonacciPollInterval with a supplied time unit.
        Parameters:
        offset - The fibonacci offset. For example if offset is 5 and poll count is 1 then the returned duration will be 8 (since fib(6) is equal to 8). Default offset is 0. You can set the offset to -1 if you want the first value to be fib(0) (i.e. pollCount - offset). By default the first value will be fib(1).
        unit - The time unit
    • Method Detail

      • next

        public java.time.Duration next​(int pollCount,
                                       java.time.Duration previousDuration)
        Generate the next duration
        Specified by:
        next in interface PollInterval
        Parameters:
        pollCount - The number of times the condition has been polled (evaluated)
        previousDuration - The duration of the previously returned poll interval
        Returns:
        The next duration in the fibonacci sequence.
      • fibonacci

        public static FibonacciPollInterval fibonacci​(java.util.concurrent.TimeUnit unit)
        Syntactic sugar for new FibonacciPollInterval(unit)
        Parameters:
        unit - The time unit
        Returns:
        A new instance of FibonacciPollInterval.
      • fibonacci

        public static FibonacciPollInterval fibonacci​(int offset,
                                                      java.util.concurrent.TimeUnit unit)
        Syntactic sugar for new FibonacciPollInterval(offset, unit)
        Parameters:
        offset - The fibonacci offset. For example if offset is 5 and poll count is 1 then the returned duration will be 8 (since fib(6) is equal to 8). Default offset is 0.
        unit - The time unit
        Returns:
        A new instance of FibonacciPollInterval.
      • fibonacci

        protected int fibonacci​(int value)
        Generate the value of the fibonacci sequence for number.
        Parameters:
        value - The value
        Returns:
        the fibonacci number
      • fib

        private int fib​(int value,
                        int current,
                        int previous)
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object