我有超时限制的任务,我想确定这些任务在被迫终止之前的执行时间是多少?
e.g。如果一个任务花了所有时间等待队列,因为没有可用的线程,它的执行时间为零。
是子类ThreadPoolExecutor
的最佳方法并覆盖beforeExecute
和afterExecute
,如果是,如何?
答案 0 :(得分:0)
最好你可以在调用方法本身内编码。
代表
call() {
long time = System.currentTimeInmillis();
..
..
//Logic
..
..
long time1 = System.currentTimeInmillis();
//Now you can find the time difference.
}
此代码不会花费等待时间,也只能找到计算时间。
答案 1 :(得分:0)
Here是跟踪线程池的一种实现,它跟踪任务的累积执行统计信息,如总执行时间,平均执行时间,完成的总任务和总进行中任务。
我不知道这是不是你要找的。但是,这肯定会让您对实现有所了解,您可以修改实现以满足您的需求。