【发布时间】:2016-06-13 00:50:23
【问题描述】:
我正在使用 Akka 并行执行一堆非常短的任务。我使用system.actorOf 创建了一个父Actor,它使用context().actorOf 创建了25 个其他Actor。然后我在父 Actor 中调用 context().stop(getSelf()),这应该会停止所有子 Actor。
我正在查看 VisualVM 中的线程状态以了解 Akka 如何在后台工作,我注意到当我在父 Actor 上调用 stop() 时,由 Akka 生成的线程开始慢慢被杀死一个在不同的时间,其余的保持停放。 10 分钟后所有线程都被杀死,但这是我调用 stop() 后不久的快照,您可以在其中看到默认调度程序中的一些线程被杀死,但大多数线程仍处于停顿状态:
为什么这些线程不会同时被杀死? 为什么它们会一次一个地被杀死?为什么让他们中的任何一个停放?我创建的其他演员似乎没有重用这些线程。
【问题讨论】:
标签: java multithreading playframework playframework-2.0 akka