首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

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

2013-09-28 
Disruptor 源码分析(7)不同消费者类型的区别disruptor不同消费者类型的区别EventProcessor有3个实现类Batc

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 少了排队取任务的过程,所以线程是并行的.这样多个线程都会同时去检查生产者的位置信息,竞争压力会更大一点.

热点排行