Disruptor-等待策略
BlockingWaitStrategy
Disruptor默认策略
对EventProcessor
使用等待条件的锁和条件变量的阻塞策略。
当吞吐量和低延迟不如CPU资源那么重要时,可以使用此策略。
LiteBlockingWaitStrategy
BlockingWaitStrategy的变体,在无竞争的情况下尝试消除条件唤醒。 显示微基准测试的性能改进。
但是,由于我尚未完全证明锁省略码的正确性,因此应将这种等待策略视为实验性的。
BusySpinWaitStrategy
繁忙旋转策略,该繁忙旋转策略对EventProcessor
的障碍使用繁忙的旋转循环。
此策略将使用CPU资源来避免可能导致延迟抖动的系统调用。 最好当线程可以绑定到特定的CPU内核时使用。
TimeoutBlockingWaitStrategy
LiteTimeoutBlockingWaitStrategy
TimeoutBlockingWaitStrategy的变体,在无竞争的情况下尝试消除条件唤醒。
PhasedBackoffWaitStrategy
在屏障上等待EventProcessor的分阶段等待策略。
当吞吐量和低延迟不如CPU资源那么重要时,可以使用此策略。 旋转,然后屈服,然后使用配置的后备WaitStrategy等待。
SleepingWaitStrategy
最初启动的休眠策略,然后使用Thread.yield(),最后在EventProcessor等待屏障时,休眠操作系统和JVM将允许的最小数量的nanos。
此策略是性能和CPU资源之间的良好折衷。 安静时段后可能会出现延迟峰值。 这也将减少对生产线程的影响,因为它不需要发出信号通知任何条件变量来唤醒事件处理线程。
YieldingWaitStrategy
在初始旋转后,使用Thread.yield()的EventProcessor在屏障上等待。
如果其他线程需要CPU资源,则此策略将使用100%CPU,但比忙碌的自旋策略更容易放弃CPU。