public final class LiteBlockingWaitStrategy extends java.lang.Object implements WaitStrategy
BlockingWaitStrategy
that attempts to elide conditional wake-ups when
the lock is uncontended. Shows performance improvements on microbenchmarks. However this
wait strategy should be considered experimental as I have not full proved the correctness of
the lock elision code.Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.locks.Lock |
lock |
private java.util.concurrent.locks.Condition |
processorNotifyCondition |
private java.util.concurrent.atomic.AtomicBoolean |
signalNeeded |
Constructor and Description |
---|
LiteBlockingWaitStrategy() |
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
private final java.util.concurrent.atomic.AtomicBoolean signalNeeded
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