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)
Construct
PhasedBackoffWaitStrategy with fallback to LiteBlockingWaitStrategy |
static PhasedBackoffWaitStrategy |
withLock(long spinTimeout,
long yieldTimeout,
TimeUnit units)
Construct
PhasedBackoffWaitStrategy with fallback to BlockingWaitStrategy |
static PhasedBackoffWaitStrategy |
withSleep(long spinTimeout,
long yieldTimeout,
TimeUnit units)
Construct
PhasedBackoffWaitStrategy with fallback to SleepingWaitStrategy |
public PhasedBackoffWaitStrategy(long spinTimeout, long yieldTimeout, TimeUnit units, WaitStrategy fallbackStrategy)
public static PhasedBackoffWaitStrategy withLock(long spinTimeout, long yieldTimeout, TimeUnit units)
PhasedBackoffWaitStrategy
with fallback to BlockingWaitStrategy
spinTimeout
- The maximum time in to busy spin for.yieldTimeout
- The maximum time in to yield for.units
- Time units used for the timeout values.public static PhasedBackoffWaitStrategy withLiteLock(long spinTimeout, long yieldTimeout, TimeUnit units)
PhasedBackoffWaitStrategy
with fallback to LiteBlockingWaitStrategy
spinTimeout
- The maximum time in to busy spin for.yieldTimeout
- The maximum time in to yield for.units
- Time units used for the timeout values.public static PhasedBackoffWaitStrategy withSleep(long spinTimeout, long yieldTimeout, TimeUnit units)
PhasedBackoffWaitStrategy
with fallback to SleepingWaitStrategy
spinTimeout
- The maximum time in to busy spin for.yieldTimeout
- The maximum time in to yield for.units
- Time units used for the timeout values.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
- if a timeout occurs before waiting completes (not used by some strategies)public void signalAllWhenBlocking()
WaitStrategy
EventProcessor
s that the cursor has advanced.signalAllWhenBlocking
in interface WaitStrategy
Copyright © 2022. All rights reserved.