Chr*_*s R 9 java statistics concurrency monitoring
我正在使用ExecutorService启动任务,调度需要按任务特定条件分组的任务:
Task[type=a]
Task[type=b]
Task[type=a]
...
Run Code Online (Sandbox Code Playgroud)
我想定期输出每个任务所用的平均时间长度(按分组type)以及统计信息,如平均值/中位数和标准差.
当然,这需要非常快,理想情况下不应该在报告统计信息时导致各个线程同步.这样做有什么好的架构?
Ada*_*icz 10
ThreadPoolExecutor提供了可以覆盖的beforeExecute和afterExecute方法.您可以使用它们将统计信息记录在单个(ExecutorService的成员变量)ConcurrentHashMap中,该任务键用于任务的某个唯一标识符,并存储类型,开始时间和结束时间.
从ConcurrentHashMap您准备好查看它们的时间开始计算统计数据.
| 归档时间: |
|
| 查看次数: |
7233 次 |
| 最近记录: |