public final class PhasedBackoffWaitStrategy extends java.lang.Object implements WaitStrategy
EventProcessors on a barrier.
This strategy can be used when throughput and low-latency are not as important as CPU resource.
Spins, then yields, then blocks on the configured BlockingStrategy.| Constructor and Description |
|---|
PhasedBackoffWaitStrategy(long spinTimeoutMillis,
long yieldTimeoutMillis,
java.util.concurrent.TimeUnit units,
com.lmax.disruptor.PhasedBackoffWaitStrategy.BlockingStrategy lockingStrategy) |
| 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.
|
static PhasedBackoffWaitStrategy |
withLock(long spinTimeoutMillis,
long yieldTimeoutMillis,
java.util.concurrent.TimeUnit units)
Block with wait/notifyAll semantics
|
static PhasedBackoffWaitStrategy |
withSleep(long spinTimeoutMillis,
long yieldTimeoutMillis,
java.util.concurrent.TimeUnit units)
Block by sleeping in a loop
|
public PhasedBackoffWaitStrategy(long spinTimeoutMillis,
long yieldTimeoutMillis,
java.util.concurrent.TimeUnit units,
com.lmax.disruptor.PhasedBackoffWaitStrategy.BlockingStrategy lockingStrategy)
public static PhasedBackoffWaitStrategy withLock(long spinTimeoutMillis, long yieldTimeoutMillis, java.util.concurrent.TimeUnit units)
public static PhasedBackoffWaitStrategy withSleep(long spinTimeoutMillis, long yieldTimeoutMillis, java.util.concurrent.TimeUnit units)
public long waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
throws AlertException,
java.lang.InterruptedException
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.java.lang.InterruptedException - if the thread is interrupted.public void signalAllWhenBlocking()
WaitStrategyEventProcessors that the cursor has advanced.signalAllWhenBlocking in interface WaitStrategyCopyright © 2011 - 2013 LMAX Ltd. All Rights Reserved.