- java.lang.Object
-
- com.lmax.disruptor.Sequence
-
- Direct Known Subclasses:
FixedSequenceGroup
,SequenceGroup
public class Sequence extends java.lang.Object
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.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
addAndGet(long increment)
Atomically add the supplied value.boolean
compareAndSet(long expectedValue, long newValue)
Perform a compare and set operation on the sequence.long
get()
Perform a volatile read of this sequence's value.long
getAndAdd(long increment)
Perform an atomic getAndAdd operation on the sequence.long
incrementAndGet()
Atomically increment the sequence by one.void
set(long value)
Perform an ordered write of this sequence.void
setVolatile(long value)
Performs a volatile write of this sequence.java.lang.String
toString()
-
-
-
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.
-
getAndAdd
public long getAndAdd(long increment)
Perform an atomic getAndAdd operation on the sequence.- Parameters:
increment
- The value to add to the sequence.- Returns:
- the value before increment
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-