Package org.multiverse.api
Class DefaultBackoffPolicy
- java.lang.Object
-
- org.multiverse.api.DefaultBackoffPolicy
-
- All Implemented Interfaces:
BackoffPolicy
public final class DefaultBackoffPolicy extends java.lang.Object implements BackoffPolicy
ABackoffPolicy
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 Summary
Fields Modifier and Type Field Description static BackoffPolicy
MAX_100_MS
private long
minDelayNs
private long[]
slotTimes
-
Constructor Summary
Constructors Constructor Description DefaultBackoffPolicy()
Creates an ExponentialBackoffPolicy with 100 nanoseconds as minimal delay and 100 milliseconds as maximum delay.DefaultBackoffPolicy(long minDelayNs)
Creates an ExponentialBackoffPolicy with given maximum delay.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected long
calcDelayNs(int attempt)
void
delay(int attempt)
Delays the calling Thread.void
delayUninterruptible(int attempt)
Delays the calling Thread without being interrupted.private int
f(int x, double a, double b)
-
-
-
Field Detail
-
MAX_100_MS
public static final BackoffPolicy MAX_100_MS
-
minDelayNs
private final long minDelayNs
-
slotTimes
private final long[] slotTimes
-
-
Constructor Detail
-
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:
java.lang.NullPointerException
- if unit is null.
-
-
Method Detail
-
f
private int f(int x, double a, double b)
-
delay
public void delay(int attempt) throws java.lang.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 interfaceBackoffPolicy
- Throws:
java.lang.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 interfaceBackoffPolicy
- Parameters:
attempt
- the
-
calcDelayNs
protected long calcDelayNs(int attempt)
-
-