读书人

Disruptor 源码分析(七) 不同消费者类

发布时间: 2013-09-28 10:01:20 作者: rapoo

Disruptor 源码分析(7) 不同消费者类型的区别
disruptor不同消费者类型的区别

EventProcessor有3个实现类

BatchEventProcessor 多线程并发执行,不同线程执行不同是不同的event
WorkProcessor 多线程排队领event然后再执行,不同线程执行不同是不同的event.但是多了个排队领event的过程,这个是为了减少对生产者队列查询的压力吧.
NoOpEventProcessor 这个不出来任何事情 我们就不管他了.


WorkProcessor的run方法中有这一段

 public RingBuffer<T> start(final Executor executor)        for (WorkProcessor<?> processor : workProcessors)        {            executor.execute(processor);

可以看到是多线程的,而且是每一个WorkHandler一个线程.
感觉这里的WorkHandler和EventHandler没区别,都有onEvent方法,只是EventHandler的onEvent多了个sequence.


BatchEventProcessor和前面的WorkProcessor大部分相同,不同的地方是:
1 处理的是EventHandler,后面执行的时候也是一个EventHandler一个线程
2 少了排队取任务的过程,所以线程是并行的.这样多个线程都会同时去检查生产者的位置信息,竞争压力会更大一点.

读书人网 >开源软件

热点推荐