我正在使用Akka并行执行一堆非常短的任务。我使用system.actorOf
创建了一个父演员,该演员使用context().actorOf
创建了25个其他演员。然后我在父Actor中调用context().stop(getSelf())
,这应该停止所有的孩子。为什么Akka会将所有这些线程停放?
我正在观察VisualVM中的线程状态,以了解一些关于Akka如何在后台工作的内容,并且我注意到当我在父Actor上调用stop()
时,Akka产生的线程开始慢慢被逐个杀死在不同的时间,其余的仍然停放。这是前10分钟,所有的线程被打死,但这里很快的快照我叫stop()
,在那里你可以在默认调度员看到几个线程被杀害之后,但在多数其余停放:
为什么这些线程不会全部同时被杀死?他们为什么会一次又一次地看起来任意被杀呢?为什么让他们任何一个停放?我似乎并没有创建其他演员重用这些线程。