Class DefaultBackoffPolicy

java.lang.Object
org.multiverse.api.DefaultBackoffPolicy
All Implemented Interfaces:
BackoffPolicy

public final class DefaultBackoffPolicy extends Object implements BackoffPolicy
A BackoffPolicy that does an 'exponential' backoff. So each next attempt, the calculated delay is increased and randomized (so the next value can be smaller than the previous, but overall they will increase).
  • Field Details

    • MAX_100_MS

      public static final BackoffPolicy MAX_100_MS
    • minDelayNs

      private final long minDelayNs
    • slotTimes

      private final long[] slotTimes
  • Constructor Details

    • DefaultBackoffPolicy

      public DefaultBackoffPolicy()
      Creates an ExponentialBackoffPolicy with 100 nanoseconds as minimal delay and 100 milliseconds as maximum delay.
    • DefaultBackoffPolicy

      public DefaultBackoffPolicy(long minDelayNs)
      Creates an ExponentialBackoffPolicy with given maximum delay.
      Parameters:
      minDelayNs - the minimum delay in nanoseconds to wait. If a negative or zero value provided, it will be interpreted that no external minimal value is needed.
      Throws:
      NullPointerException - if unit is null.
  • Method Details

    • f

      private int f(int x, double a, double b)
    • delay

      public void delay(int attempt) throws InterruptedException
      Description copied from interface: BackoffPolicy
      Delays the calling Thread.

      The implementation is free to make this a no-op call.

      Specified by:
      delay in interface BackoffPolicy
      Parameters:
      attempt -
      Throws:
      InterruptedException
    • delayUninterruptible

      public void delayUninterruptible(int attempt)
      Description copied from interface: BackoffPolicy
      Delays the calling Thread without being interrupted.

      The implementation is free to make this a no-op call.

      Specified by:
      delayUninterruptible in interface BackoffPolicy
      Parameters:
      attempt - the
    • calcDelayNs

      protected long calcDelayNs(int attempt)