我将探索Akka Scheduler
。根据我的假设,调度程序在另一个线程的特定时间内运行计划任务。根据documentation ,它们在调度程序中使用 Runnable 对象。这还不清楚,为什么它们使用 Runnable 对象并且没有在 runnable 上调用 start() ,新的线程堆栈不会产生。或者 Scheduler
没有创建一个单独的线程来运行计划任务?
akka 调度程序在幕后是如何工作的?
最佳答案
当我使用Akka Scheduler
时,我尝试研究源代码以获得更多知识 - https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/Scheduler.scala
如您所见,Akka Scheduler
使用 ExecutorContect
(ForkJoinPool
下的包装器)作为隐式参数来调用新的 Runnable
code> 并通过 接收器向其他参与者发送消息!通过利用
。即发即忘
模式来发送消息
理解整体情况的另一个重要类是FiniteDuration
(它允许设置延迟时间)、Cancellable
(它允许取消计划操作的执行) ,它们在大多数与调度过程相关的方法中使用(例如scheduleOnce,我用它来实现参与者之间的时间同步)
关于java - Akka调度程序: How akka scheduler work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031805/