我正在使用Akka並行執行一堆非常短的任務。我使用system.actorOf
創建了一個父演員,該演員使用context().actorOf
創建了25個其他演員。然後我在父Actor中調用context().stop(getSelf())
,這應該停止所有的孩子。爲什麼Akka會將所有這些線程停放?
我正在觀察VisualVM中的線程狀態,以瞭解一些關於Akka如何在後臺工作的內容,並且我注意到當我在父Actor上調用stop()
時,Akka產生的線程開始慢慢被逐個殺死在不同的時間,其餘的仍然停放。這是前10分鐘,所有的線程被打死,但這裏很快的快照我叫stop()
,在那裏你可以在默認調度員看到幾個線程被殺害之後,但在多數其餘停放:
爲什麼這些線程不會全部同時被殺死?他們爲什麼會一次又一次地看起來任意被殺呢?爲什麼讓他們任何一個停放?我似乎並沒有創建其他演員重用這些線程。