java.lang.Object
cn.wjybxx.disruptor.MpUnboundedEventSequencer<E>
- 所有已实现的接口:
DataProvider<E>,EventSequencer<E>
- 作者:
- wjybxx date - 2024/1/20
-
嵌套类概要
嵌套类 -
字段概要
从接口继承的字段 cn.wjybxx.disruptor.EventSequencer
UNBOUNDED_CAPACITY -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明voidaddGatingBarriers(SequenceBarrier... gatingBarriers) 添加一个网关屏障 -- 消费链最末端的消费者屏障intcapacity()数据结构大小 1.如果为【无界】数据结构,则返回-1; 2.如果为【有界】数据结构,则返回真实值。final EconsumerGet(long sequence) 该接口用于优化消费者查询数据voidconsumerSet(long sequence, E data) 该接口用于消费者覆盖数据(通常用于删除数据) 1.当使用无界队列需要即时清理内存时使用。final Eget(long sequence) 根据指定序号获取data 该接口可用于生产者和消费者获取数据,但对于非固定大小的数据结构而言,可能有较长的查询路径。booleanhasAvailableCapacity(int requiredCapacity) booleaninSameChunk(long seq1, long seq2) 判断两个序号是否在同一个块static <E> MpUnboundedEventSequencer.Builder<E> static <E> MpUnboundedEventSequencer.Builder<E> newBuilder(EventFactory<? extends E> factory) newMultiConsumerBarrier(int workerCount, SequenceBarrier... barriersToTrack) 创建一个【多消费者】的屏障 -- 使用自定义等待策略newMultiConsumerBarrier(int workerCount, WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 创建一个【多消费者】的屏障 -- 使用自定义等待策略newSingleConsumerBarrier(SequenceBarrier... barriersToTrack) 创建一个【单消费者】的屏障 -- 使用默认的等待策略newSingleConsumerBarrier(WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 创建一个【单消费者】的屏障 -- 使用自定义等待策略longnext()longnext(int n) longlongnextInterruptibly(int n) 获取生产者屏障 -- 生产者发布数据final EproducerGet(long sequence) 该接口用于优化生产者查询数据voidproducerSet(long sequence, E data) 该接口用于生产者填充数据 1.voidpublish(long sequence) voidpublish(long lo, long hi) long当前剩余容量 1.并不一定具有价值,因为多线程模型下查询容器的当前大小时,它反映的总是一个旧值。booleanremoveGatingBarrier(SequenceBarrier gatingBarrier) 移除一个网关屏障 -- 消费链最末端的消费者屏障获取序号生成器 -- 用于特殊需求boolean手动触发回收 -- 该方法可安全调用booleantryMoveHeadToNext(long gatingSequence) 手动触发回收,慎重调用该方法,序号错误将导致严重buglongtryNext()longtryNext(int n) long
-
构造器详细资料
-
MpUnboundedEventSequencer
-
-
方法详细资料
-
getBuffer
-
inSameChunk
public boolean inSameChunk(long seq1, long seq2) 判断两个序号是否在同一个块 -
tryMoveHeadToNext
public boolean tryMoveHeadToNext()手动触发回收 -- 该方法可安全调用 -
tryMoveHeadToNext
public boolean tryMoveHeadToNext(long gatingSequence) 手动触发回收,慎重调用该方法,序号错误将导致严重bug -
get
从接口复制的说明:DataProvider根据指定序号获取data 该接口可用于生产者和消费者获取数据,但对于非固定大小的数据结构而言,可能有较长的查询路径。- 指定者:
get在接口中DataProvider<E>
-
producerGet
从接口复制的说明:DataProvider该接口用于优化生产者查询数据- 指定者:
producerGet在接口中DataProvider<E>
-
consumerGet
从接口复制的说明:DataProvider该接口用于优化消费者查询数据- 指定者:
consumerGet在接口中DataProvider<E>
-
producerSet
从接口复制的说明:DataProvider该接口用于生产者填充数据 1. 当拷贝既有数据成本较高时可替换既有对象 2. set不提供特殊的内存语义,因此只应该生产者调用- 指定者:
producerSet在接口中DataProvider<E>
-
consumerSet
从接口复制的说明:DataProvider该接口用于消费者覆盖数据(通常用于删除数据) 1.当使用无界队列需要即时清理内存时使用。 2.set不提供特殊的内存语义,因此只应该由末尾的消费者调用- 指定者:
consumerSet在接口中DataProvider<E>
-
capacity
public int capacity()从接口复制的说明:EventSequencer数据结构大小 1.如果为【无界】数据结构,则返回-1; 2.如果为【有界】数据结构,则返回真实值。The capacity of the data structure to hold entries.
- 指定者:
capacity在接口中EventSequencer<E>- 返回:
- the size of the RingBuffer.
-
remainingCapacity
public long remainingCapacity()从接口复制的说明:EventSequencer当前剩余容量 1.并不一定具有价值,因为多线程模型下查询容器的当前大小时,它反映的总是一个旧值。 2.如果为【无界】数据结构,可能返回任意值(大于0),但建议返回Integer.MAX_VALUE。 3.如果为【有界】数据结构,则返回真实的值。Get the remaining capacity for this sequencer.
- 指定者:
remainingCapacity在接口中EventSequencer<E>- 返回:
- The number of slots remaining.
-
sequencer
从接口复制的说明:EventSequencer获取序号生成器 -- 用于特殊需求- 指定者:
sequencer在接口中EventSequencer<E>
-
producerBarrier
从接口复制的说明:EventSequencer获取生产者屏障 -- 生产者发布数据- 指定者:
producerBarrier在接口中EventSequencer<E>
-
addGatingBarriers
从接口复制的说明:EventSequencer添加一个网关屏障 -- 消费链最末端的消费者屏障- 指定者:
addGatingBarriers在接口中EventSequencer<E>
-
removeGatingBarrier
从接口复制的说明:EventSequencer移除一个网关屏障 -- 消费链最末端的消费者屏障- 指定者:
removeGatingBarrier在接口中EventSequencer<E>
-
newSingleConsumerBarrier
从接口复制的说明:EventSequencer创建一个【单消费者】的屏障 -- 使用默认的等待策略- 指定者:
newSingleConsumerBarrier在接口中EventSequencer<E>
-
newSingleConsumerBarrier
public ConsumerBarrier newSingleConsumerBarrier(WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 从接口复制的说明:EventSequencer创建一个【单消费者】的屏障 -- 使用自定义等待策略- 指定者:
newSingleConsumerBarrier在接口中EventSequencer<E>
-
newMultiConsumerBarrier
从接口复制的说明:EventSequencer创建一个【多消费者】的屏障 -- 使用自定义等待策略- 指定者:
newMultiConsumerBarrier在接口中EventSequencer<E>
-
newMultiConsumerBarrier
public ConsumerBarrier newMultiConsumerBarrier(int workerCount, WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 从接口复制的说明:EventSequencer创建一个【多消费者】的屏障 -- 使用自定义等待策略- 指定者:
newMultiConsumerBarrier在接口中EventSequencer<E>
-
hasAvailableCapacity
public boolean hasAvailableCapacity(int requiredCapacity) - 指定者:
hasAvailableCapacity在接口中EventSequencer<E>
-
next
public long next()- 指定者:
next在接口中EventSequencer<E>
-
next
public long next(int n) - 指定者:
next在接口中EventSequencer<E>
-
tryNext
public long tryNext()- 指定者:
tryNext在接口中EventSequencer<E>
-
tryNext
public long tryNext(int n) - 指定者:
tryNext在接口中EventSequencer<E>
-
nextInterruptibly
- 指定者:
nextInterruptibly在接口中EventSequencer<E>- 抛出:
InterruptedException
-
nextInterruptibly
- 指定者:
nextInterruptibly在接口中EventSequencer<E>- 抛出:
InterruptedException
-
tryNext
- 指定者:
tryNext在接口中EventSequencer<E>
-
publish
public void publish(long sequence) - 指定者:
publish在接口中EventSequencer<E>
-
publish
public void publish(long lo, long hi) - 指定者:
publish在接口中EventSequencer<E>
-
newBuilder
-
newBuilder
public static <E> MpUnboundedEventSequencer.Builder<E> newBuilder(EventFactory<? extends E> factory)
-