Package com.lmax.disruptor
Class Sequence
- java.lang.Object
-
- com.lmax.disruptor.LhsPadding
-
- com.lmax.disruptor.Value
-
- com.lmax.disruptor.RhsPadding
-
- com.lmax.disruptor.Sequence
-
- Direct Known Subclasses:
FixedSequenceGroup,NoOpEventProcessor.SequencerFollowingSequence,SequenceGroup
public class Sequence extends RhsPadding
Concurrent sequence class used for tracking the progress of the ring buffer and event processors. Support a number of concurrent operations including CAS and order writes.
Also attempts to be more efficient with regards to false sharing by adding padding around the volatile field.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static longINITIAL_VALUEprivate static sun.misc.UnsafeUNSAFEprivate static longVALUE_OFFSET
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longaddAndGet(long increment)Atomically add the supplied value.booleancompareAndSet(long expectedValue, long newValue)Perform a compare and set operation on the sequence.longget()Perform a volatile read of this sequence's value.longincrementAndGet()Atomically increment the sequence by one.voidset(long value)Perform an ordered write of this sequence.voidsetVolatile(long value)Performs a volatile write of this sequence.java.lang.StringtoString()
-
-
-
Field Detail
-
INITIAL_VALUE
static final long INITIAL_VALUE
- See Also:
- Constant Field Values
-
UNSAFE
private static final sun.misc.Unsafe UNSAFE
-
VALUE_OFFSET
private static final long VALUE_OFFSET
-
-
Method Detail
-
get
public long get()
Perform a volatile read of this sequence's value.- Returns:
- The current value of the sequence.
-
set
public void set(long value)
Perform an ordered write of this sequence. The intent is a Store/Store barrier between this write and any previous store.- Parameters:
value- The new value for the sequence.
-
setVolatile
public void setVolatile(long value)
Performs a volatile write of this sequence. The intent is a Store/Store barrier between this write and any previous write and a Store/Load barrier between this write and any subsequent volatile read.- Parameters:
value- The new value for the sequence.
-
compareAndSet
public boolean compareAndSet(long expectedValue, long newValue)Perform a compare and set operation on the sequence.- Parameters:
expectedValue- The expected current value.newValue- The value to update to.- Returns:
- true if the operation succeeds, false otherwise.
-
incrementAndGet
public long incrementAndGet()
Atomically increment the sequence by one.- Returns:
- The value after the increment
-
addAndGet
public long addAndGet(long increment)
Atomically add the supplied value.- Parameters:
increment- The value to add to the sequence.- Returns:
- The value after the increment.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-