Akka调度程序:akka调度程序如何工作?
我要研究Akka Scheduler
。根据我的假设,调度程序在另一个线程的特定时间内运行计划任务。根据documentation,他们在调度程序中使用Runnable
对象。这个不清楚,为什么他们使用Runnable
对象而没有调用start()
就可以运行,新的线程栈不能生成。或者Scheduler
不会为运行计划任务创建分隔线程?Akka调度程序:akka调度程序如何工作?
akka
调度程序如何工作?
上有Runnable
没有start()
。您正在混合Thread
和Runnable
。 在引擎盖下,Scheduler
使用Dispatcher
,可以将其作为一个ThreadPool
顶部的阿卡图层进行简化。为了执行你的任务,akka会将你的任务(Runnable
)提交给这个池,那么这个池将有一个他的Thread
来调用任务的run()
方法。
,当我用Akka Scheduler
,我想研究源代码,获取更多的知识 - https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/Scheduler.scala
正如你所看到的,Akka Scheduler
使用ExecutorContect
(包装ForkJoinPool
下)的隐含参数onvoke新Runnable
并发送消息给其他演员通过receiver ! message
通过利用fire and forget
模式。
理解全貌另一个重要的类是FiniteDuration
(它允许设立延迟时间),Cancellable
(它允许取消预定操作的执行),他们使用的是与调度流程相关的大部分方法(例如scheduleOnce,我用它来演员之间的时间同步)
它说明了情况吗? – pacman
请仔细阅读我的问题,我想知道,调度程序如何工作以及如何在schduler中管理线程 –
它基于作业存储桶计划程序。这两个链接为您提供了更多与示例的内部链接。这就是为什么我包含这些链接。 –