public final class SleepingWaitStrategy extends java.lang.Object implements WaitStrategy
LockSupport.parkNanos(1)
) for the minimum
number of nanos the OS and JVM will allow while the
EventProcessor
s are waiting on a barrier.
This strategy is a good compromise between performance and CPU resource. Latency spikes can occur after quiet periods.
Modifier and Type | Field and Description |
---|---|
private static int |
DEFAULT_RETRIES |
private int |
retries |
Constructor and Description |
---|
SleepingWaitStrategy() |
SleepingWaitStrategy(int retries) |
Modifier and Type | Method and Description |
---|---|
private int |
applyWaitMethod(SequenceBarrier barrier,
int counter) |
void |
signalAllWhenBlocking()
Implementations should signal the waiting
EventProcessor s that the cursor has advanced. |
long |
waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
Wait for the given sequence to be available.
|
private static final int DEFAULT_RETRIES
private final int retries
public SleepingWaitStrategy()
public SleepingWaitStrategy(int retries)
public long waitFor(long sequence, Sequence cursor, Sequence dependentSequence, SequenceBarrier barrier) throws AlertException, java.lang.InterruptedException
WaitStrategy
BatchEventProcessor
explicitly
handles this case and will signal a timeout if required.waitFor
in interface WaitStrategy
sequence
- to be waited on.cursor
- the main sequence from ringbuffer. Wait/notify strategies will
need this as it's the only sequence that is also notified upon update.dependentSequence
- on which to wait.barrier
- the processor is waiting on.AlertException
- if the status of the Disruptor has changed.java.lang.InterruptedException
- if the thread is interrupted.public void signalAllWhenBlocking()
WaitStrategy
EventProcessor
s that the cursor has advanced.signalAllWhenBlocking
in interface WaitStrategy
private int applyWaitMethod(SequenceBarrier barrier, int counter) throws AlertException
AlertException