寻找ExecutorService
喜欢 ThreadPoolExecutor
或ForkJoinPool
但将任务添加到工作队列并将其出队执行的延迟最小。
非常希望它能够感知 CPU 缓存并具有可调整的退避策略和线程工厂。
或者至少是 cooking 它的部分的最佳例子。
最佳答案
minimal latency for adding tasks to work queue and dequeueing them for execution.
这些库都具有相同的延迟,这很大程度上取决于您拥有的硬件和操作系统(因为它进行线程调度)
没有影响延迟的特定选项。
其他选项包括使用;
- 不使用另一个线程,这具有最小的延迟,并具有内置的退避策略;)
- 忙于等待消费者线程。
- 如果消费者跟不上,则减慢生产者的速度。
您可能感兴趣的几个库是 Disruptor 库,它是一个超低延迟环形缓冲区,支持忙等待,还有我的一个库 Java Chronicle,它几乎免费为您提供所有消息/任务的持久性并且您的消费者可以落后于生产者任意数量,几乎没有影响(例如落后许多 GB)
CPU cache aware
这两个库都通过最大限度地减少产生的垃圾量来提高缓存利用率。 ExecutorService 会产生一些垃圾,但到目前为止最大的延迟是唤醒消费者线程。
关于java - 寻找具有线程池和最小调度延迟的 ExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16245199/