使用线程池和&寻找ExecutorService最小的进度延迟

时间:2013-04-26 21:03:53

标签: java scala garbage-collection executorservice low-latency

正在寻找ExecutorService,例如ThreadPoolExecutorForkJoinPool,但将任务添加到工作队列并将其排队执行的延迟时间最短。

非常希望它能够识别CPU缓存&具有可调节的退避策略和螺纹工厂。

或至少是烹饪它的部分的最好例子。

1 个答案:

答案 0 :(得分:4)

  

将任务添加到工作队列并使其出列以执行的最小延迟。

这些库都具有相同的延迟,这主要取决于您拥有的硬件和操作系统(因为它执行线程调度)

没有影响延迟的具体选项。

其他选项包括使用;

  • 没有使用其他线程,这具有最小的延迟,具有内置的后退策略;)
  • 忙碌的等待消费者线程。
  • 如果消费者无法跟上,
  • 会减慢制作人的速度。

您可能感兴趣的几个库是Disruptor库,它是一个支持繁忙等待的超低延迟环形缓冲区,以及我的库,Java Chronicle,它几乎可以免费为您提供所有消息/任务的持久性并且您的消费者可以是生产者背后的任何数量,并且没有任何影响(例如,许多GB背后)

  

CPU缓存感知

这两个库都通过最小化生成的垃圾量来提高缓存利用率。 ExecutorService会产生一些垃圾,但到目前为止,最大的延迟是唤醒消费者线程。