我正在弄清楚如果需要在一台机器上的jvm内尽可能快地调度大量(非阻塞)任务,应该使用什么定时器实现。
我研究了ScheduledThreadPoolExecutor
和HashedWheelTimer
源(+ wheel timer一般文档),这是基本区别(N-到目前为止所有未完成的计划任务的数量,C-车轮尺寸):
ScheduledThreadPoolExecutor
HashedWheelTimer
因此,我倾向于在这种用例中使用HW Timer,因为您必须以最小的开销快速安排任务,即新任务的O(1)。
同样,您将减少记帐 Activity ,因为您将获得更少的滴答声(N 在这种情况下,取消功能不是很重要的功能
是否有人尝试过将这些计时器用于类似 Activity ,并且在实践中看到了什么结果?
谢谢!
最佳答案
HWT 。除非您需要精确到ns,否则请使用HWT。对于大多数客户端服务器应用程序而言,HWT就足够了。在许多Internet规模的应用程序中,尤其是对于超时不断变化的内存缓存而言,它是唯一的选择。我们在这里谈论的是数十亿个工作岗位。
实际上,如果您需要该级别的精度,则需要一个具有保证的中断时间且没有GC暂停的系统。即不是Java,不是Intel ... :)