scala actor的线程监控

par*_*tic 3 multithreading scala actor

有没有办法监视有多少线程实际存活并运行我的scala actor?

oxb*_*kes 5

正确执行此操作的唯一方法是为actors子系统注入自己的执行程序,因为默认情况下,actor线程没有特定于actor或scala的名称(它们可能只是被调用Thread-Npool-N-thread-M取决于您是哪个版本的Scala使用.

Philip Haller 已经给出了使用您自己的执行程序的说明,您可以根据需要监视线程使用情况,或者至少命名如此创建的线程.如果覆盖线程命名,则可以使用标准Java系统MBean(即ThreadMXBean)以编程方式(或通过JConsole/JVisualVM)监视线程.

请注意,您可以使用系统属性控制默认机制:

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