接口的使用
cn.wjybxx.disruptor.SequenceBarrier
-
cn.wjybxx.disruptor中SequenceBarrier的使用
修饰符和类型类说明final classclass多线程消费者屏障final class多生产者模型下的序号生成器class基于RingBuffer的序列生成器。class单线程消费者屏障final class单生产者序号分配器 (由用户保证不会并发的申请序号)修饰符和类型字段说明protected SequenceBarrier[]RingBufferSequencer.gatingBarriers网关屏障,序号生成器必须和这些屏障满足以下约束: cursor-bufferSize 无效输入:'<'= Min(gatingSequence) 即:所有的gatingBarrier让出下一个插槽后,生产者才能获取该插槽。参数类型为SequenceBarrier的cn.wjybxx.disruptor中的方法修饰符和类型方法说明static voidUtil.addBarriers(VarHandle varHandle, SequenceBarrier current, SequenceBarrier... barriersToAdd) 原子方式添加屏障voidMpUnboundedBufferSequencer.addDependentBarriers(SequenceBarrier... barriersToTrack) voidMultiConsumerBarrier.addDependentBarriers(SequenceBarrier... barriersToTrack) voidRingBufferSequencer.addDependentBarriers(SequenceBarrier... barriersToTrack) voidSequenceBarrier.addDependentBarriers(SequenceBarrier... barriersToTrack) 添加当前屏障需要追踪的屏障。voidSingleConsumerBarrier.addDependentBarriers(SequenceBarrier... barriersToTrack) default voidEventSequencer.addGatingBarriers(SequenceBarrier... gatingBarriers) 添加一个网关屏障 -- 消费链最末端的消费者屏障default voidSequencer.addGatingBarriers(SequenceBarrier... gatingBarriers) 添加序号生成器需要追踪的网关屏障(新增的末端消费者消费序列/进度), Sequencer(生产者)会持续跟踪它们的进度信息,以协调生产者和消费者之间的速度。static longUtil.getMinimumSequence(SequenceBarrier[] barriers) static longUtil.getMinimumSequence(SequenceBarrier[] barriers, long minimum) default ConsumerBarrierEventSequencer.newMultiConsumerBarrier(int workerCount, SequenceBarrier... barriersToTrack) 创建一个【多消费者】的屏障 -- 使用自定义等待策略default ConsumerBarrierEventSequencer.newMultiConsumerBarrier(int workerCount, WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 创建一个【多消费者】的屏障 -- 使用自定义等待策略default ConsumerBarrierSequencer.newMultiConsumerBarrier(int workerCount, SequenceBarrier... barriersToTrack) 使用默认的等待策略创建一个【多线程消费者】使用的屏障。default ConsumerBarrierSequencer.newMultiConsumerBarrier(int workerCount, WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 使用默认的等待策略创建一个【多线程消费者】使用的屏障。default ConsumerBarrierEventSequencer.newSingleConsumerBarrier(SequenceBarrier... barriersToTrack) 创建一个【单消费者】的屏障 -- 使用默认的等待策略default ConsumerBarrierEventSequencer.newSingleConsumerBarrier(WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 创建一个【单消费者】的屏障 -- 使用自定义等待策略default ConsumerBarrierSequencer.newSingleConsumerBarrier(SequenceBarrier... barriersToTrack) 使用默认的等待策略创建一个【单线程消费者】使用的屏障。default ConsumerBarrierSequencer.newSingleConsumerBarrier(WaitStrategy waitStrategy, SequenceBarrier... barriersToTrack) 使用给定的等待策略创建一个【单线程消费者】使用的屏障。static booleanUtil.removeBarrier(VarHandle varHandle, SequenceBarrier current, SequenceBarrier barrier) 原子方式删除屏障booleanMpUnboundedBufferSequencer.removeDependentBarrier(SequenceBarrier barrier) booleanMultiConsumerBarrier.removeDependentBarrier(SequenceBarrier barrier) booleanRingBufferSequencer.removeDependentBarrier(SequenceBarrier barrier) booleanSequenceBarrier.removeDependentBarrier(SequenceBarrier barrier) 移除这些屏障,不再跟踪它们的进度信息; 特殊用法:如果移除了所有的消费者,那么生产者便不会被阻塞,也就能ProducerBarrier.next()死循环中醒来!booleanSingleConsumerBarrier.removeDependentBarrier(SequenceBarrier barrier) default booleanEventSequencer.removeGatingBarrier(SequenceBarrier gatingBarrier) 移除一个网关屏障 -- 消费链最末端的消费者屏障default booleanSequencer.removeGatingBarrier(SequenceBarrier gatingBarrier) 移除这些网关屏障,不再跟踪它们的进度信息; 特殊用法:如果移除了所有的消费者,那么生产者便不会被阻塞,就能从ProducerBarrier.next()中退出。参数类型为SequenceBarrier的cn.wjybxx.disruptor中的构造器限定符构造器说明MultiConsumerBarrier(ProducerBarrier producerBarrier, int memberCount, WaitStrategy waitStrategy, SequenceBarrier... dependentBarriers) SingleConsumerBarrier(ProducerBarrier producerBarrier, WaitStrategy waitStrategy, SequenceBarrier... dependentBarriers)