public final class PhasedBackoffWaitStrategy extends Object implements WaitStrategy
Phased wait strategy for waiting 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 waits using the configured fallback WaitStrategy.
| 构造器和说明 |
|---|
PhasedBackoffWaitStrategy(long spinTimeout,
long yieldTimeout,
TimeUnit units,
WaitStrategy fallbackStrategy) |
| 限定符和类型 | 方法和说明 |
|---|---|
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 |
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)
spinTimeout - spinTimeoutyieldTimeout - yieldTimeoutunits - unitspublic static PhasedBackoffWaitStrategy withLiteLock(long spinTimeout, long yieldTimeout, TimeUnit units)
spinTimeout - spinTimeoutyieldTimeout - yieldTimeoutunits - unitspublic static PhasedBackoffWaitStrategy withSleep(long spinTimeout, long yieldTimeout, TimeUnit units)
spinTimeout - spinTimeoutyieldTimeout - yieldTimeoutunits - unitspublic long waitFor(long sequence,
Sequence cursor,
Sequence dependentSequence,
SequenceBarrier barrier)
throws AlertException,
InterruptedException,
TimeoutException
WaitStrategyBatchEventProcessor explicitly
handles this case and will signal a timeout if required.waitFor 在接口中 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.InterruptedException - if the thread is interrupted.TimeoutException - TimeoutExceptionpublic void signalAllWhenBlocking()
WaitStrategyEventProcessors that the cursor has advanced.signalAllWhenBlocking 在接口中 WaitStrategyCopyright © 2018 Pivotal Software, Inc.. All rights reserved.