我正在使用 ExecutorService 启动任务,分派(dispatch)需要按任务特定标准分组的任务:
Task[type=a]
Task[type=b]
Task[type=a]
...
我想定期输出每个任务花费的平均时间长度(按 type
分组)以及平均/中位数和标准差等统计信息。
当然,这需要非常快,理想情况下不应导致各个线程在报告统计信息时同步。执行此操作的良好架构是什么?
最佳答案
ThreadPoolExecutor提供 beforeExecute和 afterExecute您可以覆盖的方法。您可以使用它们在单个(ExecutorService 的成员变量)中记录您的统计信息 ConcurrentHashMap键入任务的一些唯一标识符,并存储类型、开始时间和结束时间。
当您准备好查看它们时,从 ConcurrentHashMap
计算统计数据。
关于java - 如何使用 ExecutorService 跟踪任务执行统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/923033/