public final class PhasedBackoffWaitStrategy extends Object implements WaitStrategy
Phased wait strategy for waiting EventProcessor
s on a barrier.
This strategy can be used when throughput and low-latency are not as important as CPU resource. Spins, then yields, then waits using the configured fallback WaitStrategy.
Constructor and Description |
---|
PhasedBackoffWaitStrategy(long spinTimeout,
long yieldTimeout,
TimeUnit units,
WaitStrategy fallbackStrategy) |
Modifier and Type | Method and Description |
---|---|
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.
|
static PhasedBackoffWaitStrategy |
withLiteLock(long spinTimeout,
long yieldTimeout,
TimeUnit units)
Block with wait/notifyAll semantics
|
static PhasedBackoffWaitStrategy |
withLock(long spinTimeout,
long yieldTimeout,
TimeUnit units)
Block with wait/notifyAll semantics
|
static PhasedBackoffWaitStrategy |
withSleep(long spinTimeout,
long yieldTimeout,
TimeUnit units)
Block by sleeping in a loop
|
public PhasedBackoffWaitStrategy(long spinTimeout, long yieldTimeout, TimeUnit units, WaitStrategy fallbackStrategy)
public static PhasedBackoffWaitStrategy withLock(long spinTimeout, long yieldTimeout, TimeUnit units)
public static PhasedBackoffWaitStrategy withLiteLock(long spinTimeout, long yieldTimeout, TimeUnit units)
public static PhasedBackoffWaitStrategy withSleep(long spinTimeout, long yieldTimeout, TimeUnit units)
public long waitFor(long sequence, Sequence cursor, Sequence dependentSequence, SequenceBarrier barrier) throws AlertException, InterruptedException, TimeoutException
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.InterruptedException
- if the thread is interrupted.TimeoutException
public void signalAllWhenBlocking()
WaitStrategy
EventProcessor
s that the cursor has advanced.signalAllWhenBlocking
in interface WaitStrategy
Copyright © 2017. All rights reserved.