其他分享
首页 > 其他分享> > Disruptor 1 内部运转流程

Disruptor 1 内部运转流程

作者:互联网

1.Disruptor的构造和初始化

可以调用Disruptor的构造函数初始化,可以设定线程池,等待策略,ringBuffer的大小等信息。

注意,在高版本的Disruptor中,带线程池的构造方法已经被打上了Deprecated标记,原文是这样解释的:

使用ThreadFactory来代替Executor的原因是为了能够在无法继续创建线程来执行producer任务的时候能够报告errors。

2.Disruptor的启动

可以调用Disruptor的start方法来启动。

 

ring buffer是为了阻止还没有被消费的slot被新的内容覆盖。

start方法只能在所有的event事件处理器都添加了之后执行一次。

代码里也做了校验,会首先判断这个方法是否有被调用过,如果调用过,直接抛出异常。

所以在start执行之前,需要添加所有的处理器,是通过下面这个方法实现的:

有几点需要注意:

首先这些已经添加的处理器是并行执行的,因为上面start方法中的consumerInfo的start是把该处理器放到线程池中处理的,所以是一个多线程执行的场景(除非这个线程池是same模式)

标签:Disruptor,调用,流程,start,线程,处理器,方法,运转
来源: https://blog.csdn.net/xxcupid/article/details/89139478