我写了一个演员,每 5 毫秒使用一个调度程序为一个字段分配一个时间戳。
在测试中,我发现结果(System.currentTimeMillis() - timeField)
至少是 35
如果我使用scheduleAtFixedRate()
Executors.scheduledThreadPool 中的方法,结果是正确的。
那么调度程序延迟是否有最小值?
答:默认滴答持续时间为 100 毫秒。
ScheduledThreadPoolExecutor 使用 System.nanoTime(): http: //fuseyism.com/classpath/doc/java/util/concurrent/ScheduledThreadPoolExecutor-source.html
Akka 有相当广泛的文档。
这是一段摘录:
“Akka 使用的 Scheduler 的默认实现是基于 Netty HashedWheelTimer。它不会在确切的时间执行任务,而是在每个滴答时,它会运行所有过期的东西。默认 Scheduler 的准确性可以由“ticks-per-wheel”和“tick-duration”配置属性。有关更多信息,请参阅:HashedWheelTimers。”