Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save adriansr/fd538964fc73183c4600ebfa42198d8a to your computer and use it in GitHub Desktop.
Save adriansr/fd538964fc73183c4600ebfa42198d8a to your computer and use it in GitHub Desktop.
class LoggingScheduledThreadPoolExecutor(nthreads: Int)
extends ScheduledThreadPoolExecutor(nthreads) {
private val log = Logger(LoggerFactory.getLogger(classOf[LoggingScheduledThreadPoolExecutor]))
override def submit[T](task: Runnable, result: T): java.util.concurrent.Future[T] = {
val queueTime = System.nanoTime()
log debug s"Submit task $task"
super.submit(new Runnable {
override def run(): Unit = {
val startTime = System.nanoTime()
val timeWaiting = (startTime - queueTime) / 1000000
log debug s"Starting task $task after $timeWaiting ms in queue"
task.run()
val tookTime = (System.nanoTime() - startTime) / 1000000
log debug s"Finished task $task took $tookTime ms"
}
},result)
}
override def submit(task: Runnable): java.util.concurrent.Future[_] = {
val queueTime = System.nanoTime()
log debug s"Submit task $task"
super.submit(new Runnable {
override def run(): Unit = {
val startTime = System.nanoTime()
val timeWaiting = (startTime - queueTime) / 1000000
log debug s"Starting task $task after $timeWaiting ms in queue"
task.run()
val tookTime = (System.nanoTime() - startTime) / 1000000
log debug s"Finished task $task took $tookTime ms"
}
})
}
override def submit[T](task: Callable[T]): java.util.concurrent.Future[T] = {
val queueTime = System.nanoTime()
log debug s"Submit task $task"
super.submit(new Callable[T] {
override def call(): T = {
val startTime = System.nanoTime()
val timeWaiting = (startTime - queueTime) / 1000000
log debug s"Starting callable $task after $timeWaiting ms in queue"
val result = task.call()
val tookTime = (System.nanoTime() - startTime) / 1000000
log debug s"Finished callable $task took $tookTime ms"
result
}
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment