2009-11-28 49 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