`

Disruptor 源码分析(6) 一个消费者和多个消费者的区别

 
阅读更多
disruptor一个消费者和多个消费者的区别

EventHandlerGroup<T> createEventProcessors(final Sequence[] barrierSequences,
                                               final EventHandler<T>[] eventHandlers)
    {

        for (int i = 0, eventHandlersLength = eventHandlers.length; i < eventHandlersLength; i++)
        {
            consumerRepository.add(batchEventProcessor, eventHandler, barrier);


可以看到有多少个eventHandler就会有多少个EventProcessor,也就是有多少个consumerInfo

再看disruptor的start方法

   
public RingBuffer<T> start()
    {
        for (ConsumerInfo consumerInfo : consumerRepository)
        {
            consumerInfo.start(executor);

consumerInfo的start方法:
public void start(final Executor executor)
    {
        executor.execute(eventprocessor);
    }


说明每一个eventHandler都是有一个单独的线程去处理的.

从这里可以理解为一个eventHandler就是一个消费者,多个eventHandler就是多个消费者.
在程序上是没有什么区别的,都是通过线程池去跑的.

(上面说的是ConsumerInfo的默认实现类EventProcessorInfo的方式.)

分享到:
评论

相关推荐

    LMAX disruptor jar包+Demo+Api+src源码 disruptor-3.0.1.jar

    - 一个简单的Disruptor示例通常包括创建Disruptor对象、初始化Ring Buffer、设置Producer和Consumer,以及启动处理循环。通过示例,开发者可以快速上手,理解Disruptor的工作流程。 综上所述,LMAX Disruptor是一...

    Disruptor应用实例

    例如,创建一个生产者线程发布消息,多个消费者线程并行处理,观察其性能提升。 6. **工具支持** 在实际开发中,我们通常会使用构建工具(如Maven或Gradle)来管理和构建项目。`.settings`目录可能包含Eclipse的...

    无锁队列Disruptor超详细教程

    Disruptor适用于多种并发场景,如单生产者多消费者并行、多生产者单消费者、多生产者多消费者竞争、多个消费者串行消费、菱形执行、链式并行执行、多组消费者相互隔离以及六边形执行顺序等。不同的场景需要结合...

    Java工具:高性能并发工具Disruptor简单使用

    Disruptor还引入了事件处理器链,使得多个消费者可以同时处理一个事件,进一步提升了处理效率。 使用Disruptor的步骤大致如下: 1. **创建Event**: 定义事件类,它是Disruptor中的基本数据单元,用于传递信息。 `...

    Disruptor并发框架

    在Disruptor中,每个生产者和消费者都有一个唯一的Sequence,用于跟踪它们对环形缓冲区的处理进度。Sequence之间的依赖关系由Barrier来维护,确保数据的正确顺序。当生产者的Sequence达到特定值时,消费者才能继续...

    无锁队列

    此外,Disruptor还采用了事件处理器链(Event Processor Chain)的概念,使得多个消费者可以并行处理队列中的事件,进一步提高了处理效率。 无锁队列的性能优势在于其非阻塞的特性,避免了锁导致的线程等待和唤醒,...

    java并发框架源码-notes:记录各种学习笔记(Java、算法、框架、数据库、并发、源码...)

    学习并发框架源码还需要理解一些经典并发编程模式,如生产者消费者模型、双端队列、工作窃取等,这些模式在很多并发框架中都有应用。 7. **并发工具类**: `Future`和`Callable`接口提供了异步计算的能力,`...

    mpmc

    在多线程环境下,多个生产者线程可以同时向队列添加元素,而多个消费者线程也可以同时从中取出元素,这种设计模式提高了系统的并行处理能力。 在Java中,JDK的Concurrent包并没有提供原生的MPMC队列实现。然而,有...

    Utilities:开源应用程序的集合

    2. **基于Disruptor的Messaging API**:Disruptor是LMAX公司开发的一个高性能的并发框架,主要用于解决多线程间的通信问题。它采用了环形缓冲区的设计,减少了锁的使用,提高了处理高并发事件的效率。基于Disruptor...

Global site tag (gtag.js) - Google Analytics