yet*_*der 9 java timer stress-testing executorservice netty
我想知道如果你需要在一台机器上的jvm中尽可能快地安排大量(非阻塞)任务,那么使用什么定时器实现.
我已经研究ScheduledThreadPoolExecutor
和HashedWheelTimer
来源(+轮定时器通用文档),这里是基本的差异(N -的所有悬而未决的计划任务数到目前为止,C -车轮大小):
的ScheduledThreadPoolExecutor
HashedWheelTimer
因此,我倾向于将硬件计时器用于这种用例,因为您必须以最小的开销快速安排任务,即O(1)用于新任务.此外,您将最大限度地减少簿记活动,因为您将获得更少的刻度(N <C)和更少的锁争用.在这种情况下,取消不是非常重要的特征
是否有人尝试过这些计时器进行类似的活动以及实际看到的结果?谢谢!
健康水处理。除非您需要 ns 精度,否则请使用 HWT。对于大多数客户端-服务器应用程序,HWT 就足够了。在许多互联网规模的应用程序中,特别是对于超时不断变化的内存缓存,这是唯一的选择。我们在这里谈论的是数十亿个就业岗位。
实际上,如果您需要这种精度,您需要一个具有保证中断时间而不是 GC 暂停的系统;即不是 Java,不是 Intel...:)