85.4. 等待策略
等待策略会影响当前等待下一个交换发布的消费者线程的等待类型。可以选择以下策略:
Name | 描述 | 建议 |
---|---|---|
Blocking | 阻塞使用 lock 和 condition 变量的策略来等待 Consumers 等待 barrier。 | 当吞吐量和低延迟不重要时,可以使用此策略。 |
sleeping | 休眠最初启动的策略,然后使用 Thread.yield (),最终作为 OS 和 JVM 的纳纳数,而 JVM 将允许 Consumers 在 barrier 上等待。 | 此策略在性能和 CPU 资源之间是很好的折衷。在静默周期后,延迟激增可能会发生。 |
BusySpin | Spin 策略使用忙碌的旋转循环,用于等待障碍的 Consumers。 | 此策略将使用 CPU 资源来避免系统调用,从而引入延迟。当线程可以绑定到特定 CPU 内核时,最好使用它。 |
创建 | 生成使用 Thread.yield ()在初始旋转后等待 Consumers 的策略。 | 此策略在性能和 CPU 资源之间是很好的折衷,而不会造成显著的延迟激增。 |