星空网 > 软件开发 > Java

Disruptor 分析

通过分析如下代码,大致了解Disruptor的原理

 1 public static void main(String[] args)throws Exception{ 2     EventFactory<LongEvent> eventFactory = new LongEventFactory(); 3     int ringBufferSize = 1024; 4     ExecutorService executors = Executors.newCachedThreadPool(); 5     final Disruptor<LongEvent> disruptor = new Disruptor<LongEvent>(eventFactory, ringBufferSize, executors,ProducerType.SINGLE, new BlockingWaitStrategy());   6     //final Disruptor<IntEvent> disruptor = new Disruptor<IntEvent>(eventFactory, ringBufferSize, executors,ProducerType.MULTI, new BlockingWaitStrategy()); //多生产者 7     Consumer consumer1 = new Consumer(); 8     Consumer consumer2 = new Consumer(); 9     EventHandlerGroup<LongEvent> firstLevel = disruptor.handleEventsWith(consumer1,consumer2);10     Consumer consumer21 = new Consumer();11     Consumer consumer22 = new Consumer();12     EventHandlerGroup<LongEvent> secondLevel = firstLevel.then(consumer21,consumer22);13     disruptor.start();  //启动disruptor,consumer开始等待,消费数据14     Producer producer = new Producer(disruptor);15     16     //启动生产者17     new Thread(producer).start();18   }

 1. 第2行代码  EventFactory<LongEvent> eventFactory = new LongEventFactory();

 数据工厂类构造单个数据,disruptor使用此工厂类预分配数据。

 2. 第5行代码 final Disruptor<LongEvent> disruptor = new Disruptor<LongEvent>(eventFactory, ringBufferSize, executors,ProducerType.SINGLE, new BlockingWaitStrategy());

 预分配数据,构建RingBuffer,指定生产者类型(单生产者、多生产者)、消费者执行的线程池、生产者等待可发布数据空间和消费者等待可消费数据的策略。

 Disruptor 分析

 3. 第9行代码 EventHandlerGroup<LongEvent> firstLevel = disruptor.handleEventsWith(consumer1,consumer2);

   每个消费者Handler都会被封装为一个Processor,其可消费序号由其sequence barrier决定。Disruptor 分析

 4. 第12行代码 EventHandlerGroup<LongEvent> secondLevel = firstLevel.then(consumer21,consumer22);

Disruptor 分析

 5. 第13行代码 disruptor.start(); //启动disruptor,consumer开始等待,消费数据

 6. 第14-17行代码,创建启动生产者,发布数据

 




原标题:Disruptor 分析

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

深圳香港专线:https://www.goluckyvip.com/tag/41195.html
深圳信诚网络:https://www.goluckyvip.com/tag/41198.html
深圳虚拟海外仓:https://www.goluckyvip.com/tag/41199.html
购物车权重:https://www.goluckyvip.com/tag/4120.html
深圳一想电子商务:https://www.goluckyvip.com/tag/41209.html
欧洲电商市场:https://www.goluckyvip.com/tag/4121.html
深圳有没有比较好玩的景点 深圳有没有比较好玩的景点推荐一下:https://www.vstour.cn/a/366175.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流