aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/akka/PoolMonitorAspect.scala
blob: c6c4e4a565fc12029a01a2741356a5108e4f771b (plain) (tree)




























                                                                             
package akka

import org.aspectj.lang.annotation.{Pointcut, Before, Aspect}
import java.util.concurrent.{TimeUnit, Executors}

@Aspect
class PoolMonitorAspect {

  @Pointcut("execution(scala.concurrent.forkjoin.ForkJoinPool.new(..))")
  protected def poolMonitor:Unit = {}

  @Before("poolMonitor() && this(pool)")
  def beforePoolInstantiation(pool: scala.concurrent.forkjoin.ForkJoinPool) {

       val scheduler = Executors.newScheduledThreadPool(1);

        scheduler.scheduleAtFixedRate(new Runnable {
          def run() {
                println("PoolName : " + pool.getClass.getSimpleName)
                println("ThreadCount :" + pool.getActiveThreadCount)
                println("Parallelism :" + pool.getParallelism)
                println("PoolSize :" + pool.getPoolSize())
                println("Submission :" + pool.getQueuedSubmissionCount())
                println("Steals :" + pool.getStealCount())
                println("All :" + pool.toString)
          }
        }, 4, 4, TimeUnit.SECONDS)
      }
}