Disruptor 简介

简介

使用RingBuffer替代普通线型队列。


Disruptor.png

WaitStrategy

BlockingWaitStrategy:默认的策略。和BlockingQueue相似使用锁和条件进行数据的监控和线程的唤醒。节省CPU但并发下性能最糟糕。
SleepingWaitStrategy:节省CPU,延迟较高。典型应用是异步日志。(自旋等待,使用Thread.yield()让出CPU,并最终使用LockSupport.parkNanos(1)进行线程休眠,确保不占用太多CPU)
YieldingWaitStrategy:低延迟。最好有多于消费者线程数量的逻辑CPU数量(逻辑CPU指的是“双核四线程”的四线程),否则整个应用都会受到影响,因为消费者线程变成一个内部执行了Thread.yield()的死循环,所有的线程都被占着Thread.yield了。
BusySpinWaitStrategy:高CPU占用,超低延迟。死循环监控缓冲区,物理CPU数量必须大于消费者线程数(如果是超线程技术模拟两个逻辑核,另一个逻辑核一定受到影响不能正常工作。)

示例

并发设计模式 生产者消费者

你可能感兴趣的:(Disruptor 简介)