有没有一种方法可以监控有多少线程实际上是在运行我的Scala Actor?
唯一正确的方法是为演员子系统注入自己的执行器,默认情况下,演员线程没有演员或Scala特定的名称(它们可能只被称为Thread-N
或pool-N-thread-M
,具体取决于您使用哪个版本的Scala。
Philip Haller 已经提供了说明,可以使用自己的执行器,在其中可以监视线程使用情况,或者至少命名所创建的线程。如果您覆盖线程命名,则可以使用标准的Java系统MBeans(即ThreadMXBean)以编程方式监视线程(或通过JConsole / JVisualVM)。
请注意,您可以使用系统属性控制默认机制:
actors.minPoolSize
actors.maxPoolSize
actors.corePoolSize