2009-11-28 79 views

回答

5

正確地做到這一點的唯一方法是注入自己執行人爲演員子系統,默認情況下,演員線程不必actor-或特定斯卡拉 - 名(他們可能只是被稱爲Thread-Npool-N-thread-M這取決於斯卡拉的版本所使用。

菲利普·哈勒has given instructions上使用自己的遺囑執行人,在那裏,如果你願意,你可以監視線程使用,或者至少是名稱,以便創建的線程。如果重寫線程命名你然後可以使用標準Java系統MBean(即ThreadMXBean)以編程方式監視線程(或通過JConsole/JVisualVM)。

注意,您可以控制使用該系統屬性的默認機制:

  • actors.minPoolSize
  • actors.maxPoolSize
  • actors.corePoolSize
3

您可以試用VisualVM工具(可從Sun免費獲得)。除此之外,它可以監視正在運行的JVM中的線程。

+1

但不會告訴*範式*哪些線程實際上服務演員 – 2009-11-28 18:47:56

+1

服務演員的線程可能會有特殊名稱來區分它們來自VM線程。如果一個線程不是一個VM線程並且不是由您創建的,那麼它可能是一個actor線程。所以+1。 – 2009-11-29 20:55:51

+0

@Seun - 不幸的是他們沒有任何類似的東西。根據你是否運行Scala 2.7.5或2.7.7,它們是'Thread-N'或'pool-N-thread-M'。這個問題唯一正確的答案是注入你自己的調度器 – 2009-11-29 22:07:33