public final class SleepingWaitStrategy extends java.lang.Object implements WaitStrategy
LockSupport.parkNanos(n)) for the minimum
number of nanos the OS and JVM will allow while the
EventProcessors are waiting on a barrier.
This strategy is a good compromise between performance and CPU resource. Latency spikes can occur after quiet periods. It will also reduce the impact on the producing thread as it will not need signal any conditional variables to wake up the event handling thread.
| Constructor and Description |
|---|
SleepingWaitStrategy() |
SleepingWaitStrategy(int retries) |
SleepingWaitStrategy(int retries,
long sleepTimeNs) |
| Modifier and Type | Method and Description |
|---|---|
void |
signalAllWhenBlocking()
Implementations should signal the waiting
EventProcessors that the cursor has advanced. |
long |
waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
Wait for the given sequence to be available.
|
public SleepingWaitStrategy()
public SleepingWaitStrategy(int retries)
public SleepingWaitStrategy(int retries,
long sleepTimeNs)
public long waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
throws AlertException
WaitStrategyBatchEventProcessor explicitly
handles this case and will signal a timeout if required.waitFor in interface WaitStrategysequence - 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.public void signalAllWhenBlocking()
WaitStrategyEventProcessors that the cursor has advanced.signalAllWhenBlocking in interface WaitStrategyCopyright © 2011 - 2018 LMAX Ltd. All Rights Reserved.