- java.lang.Object
-
- com.lmax.disruptor.Sequence
-
- com.lmax.disruptor.SequenceGroup
-
public final class SequenceGroup extends Sequence
ASequencegroup that can dynamically haveSequences added and removed while being thread safe.The
get()andset(long)methods are lock free and can be concurrently be called with theadd(Sequence)andremove(Sequence).
-
-
Constructor Summary
Constructors Constructor Description SequenceGroup()Default Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(Sequence sequence)Add aSequenceinto this aggregate.voidaddWhileRunning(Cursored cursored, Sequence sequence)Adds a sequence to the sequence group after threads have started to publish to the Disruptor.longget()Get the minimum sequence value for the group.booleanremove(Sequence sequence)Remove the first occurrence of theSequencefrom this aggregate.voidset(long value)Set allSequences in the group to a given value.intsize()Get the size of the group.-
Methods inherited from class com.lmax.disruptor.Sequence
addAndGet, compareAndSet, getAndAdd, incrementAndGet, setVolatile, toString
-
-
-
-
Method Detail
-
get
public long get()
Get the minimum sequence value for the group.
-
set
public void set(long value)
Set allSequences in the group to a given value.
-
add
public void add(Sequence sequence)
Add aSequenceinto this aggregate. This should only be used during initialisation. UseaddWhileRunning(Cursored, Sequence)- Parameters:
sequence- to be added to the aggregate.- See Also:
addWhileRunning(Cursored, Sequence)
-
remove
public boolean remove(Sequence sequence)
Remove the first occurrence of theSequencefrom this aggregate.- Parameters:
sequence- to be removed from this aggregate.- Returns:
- true if the sequence was removed otherwise false.
-
size
public int size()
Get the size of the group.- Returns:
- the size of the group.
-
addWhileRunning
public void addWhileRunning(Cursored cursored, Sequence sequence)
Adds a sequence to the sequence group after threads have started to publish to the Disruptor. It will set the sequences to cursor value of the ringBuffer just after adding them. This should prevent any nasty rewind/wrapping effects.- Parameters:
cursored- The data structure that the owner of this sequence group will be pulling it's events from.sequence- The sequence to add.
-
-