Disruptor学习----综述

来源:互联网 发布:java log文件解析入库 编辑:程序博客网 时间:2024/05/18 02:32

Disruptor学习----综述

Disruptor是一个高效无锁消息队列,由LMAX公司开发并应用于金融交易,性能极高(https://github.com/LMAX-Exchange/disruptor)。

Disruptor设计的很巧妙运用(cas,cpu cache对数组友好支持等),感觉非常值得大家学下。Disruptor以其无锁实现生产者/消费者队列,带来了高性能,比锁快多,意味着锁的性能不理想。下面贴下disruptor文档中所展示的数据,锁啊,额滴神,这性能。

Method

Time (ms)

Single thread

300

Single thread with lock

10,000

Two threads with lock

224,000

Single thread with CAS

5,700

Two threads with CAS

30,000

Single thread with volatile write

4,700

其和兴就是RingBuffer





基本用法:

Disruptor<MyEvent> disruptor = newDisruptor<MyEvent>(MyEvent.FACTORY, 32, Executors.newCachedThreadPool());EventHandler<MyEvent> handler1 = newEventHandler<MyEvent>() { ... };EventHandler<MyEvent> handler2 = newEventHandler<MyEvent>() { ... };disruptor.handleEventsWith(handler1);disruptor.after(handler1).handleEventsWith(handler2);RingBuffer ringBuffer = disruptor.start();





原创粉丝点击