如何在ThreadPoolExecutor中确定Callable执行时间?

时间:2014-11-30 16:10:08

标签: java concurrency java.util.concurrent threadpoolexecutor

我有超时限制的任务,我想确定这些任务在被迫终止之前的执行时间是多少?

e.g。如果一个任务花了所有时间等待队列,因为没有可用的线程,它的执行时间为零。

是子类ThreadPoolExecutor的最佳方法并覆盖beforeExecuteafterExecute,如果是,如何?

2 个答案:

答案 0 :(得分:0)

最好你可以在调用方法本身内编码。

代表

call() {
long time = System.currentTimeInmillis();

..
..
//Logic
..
..

long time1 = System.currentTimeInmillis();

//Now you can find the time difference.
}

此代码不会花费等待时间,也只能找到计算时间。

答案 1 :(得分:0)

Here是跟踪线程池的一种实现,它跟踪任务的累积执行统计信息,如总执行时间,平均执行时间,完成的总任务和总进行中任务。

我不知道这是不是你要找的。但是,这肯定会让您对实现有所了解,您可以修改实现以满足您的需求。