public final class BlockingWaitStrategy extends java.lang.Object implements WaitStrategy
EventProcessor
s waiting on a barrier.
This strategy can be used when throughput and low-latency are not as important as CPU resource.
Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.locks.Lock |
lock |
private java.util.concurrent.locks.Condition |
processorNotifyCondition |
Constructor and Description |
---|
BlockingWaitStrategy() |
Modifier and Type | Method and Description |
---|---|
void |
signalAllWhenBlocking()
Implementations should signal the waiting
EventProcessor s that the cursor has advanced. |
java.lang.String |
toString() |
long |
waitFor(long sequence,
Sequence cursorSequence,
Sequence dependentSequence,
SequenceBarrier barrier)
Wait for the given sequence to be available.
|
private final java.util.concurrent.locks.Lock lock
private final java.util.concurrent.locks.Condition processorNotifyCondition
public long waitFor(long sequence, Sequence cursorSequence, Sequence dependentSequence, SequenceBarrier barrier) throws AlertException, java.lang.InterruptedException
WaitStrategy
BatchEventProcessor
explicitly
handles this case and will signal a timeout if required.waitFor
in interface WaitStrategy
sequence
- to be waited on.cursorSequence
- 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()
WaitStrategy
EventProcessor
s that the cursor has advanced.signalAllWhenBlocking
in interface WaitStrategy
public java.lang.String toString()
toString
in class java.lang.Object