05-结果分析
结果分析
在本节中,我们通过扩展 ThreadPoolExecutor
类并重写它的4个方法来实现自定义的执行器。 beforeExecute()
和 afterExecute()
方法都是用于计算该任务的执行时间的, beforeExecute()
方法是在任务执行之前执行的。在本案例中,我们使用 HashMap
来存储任务的开始日期, afterExecute()
方法是在任务执行之后执行的。从 HashMap
中可以获得任务的 startTime
,然后计算它与当前日期的差值,以此获得该任务的执行时间。还可以重写 shutdown()
和 shutdownNow()
方法来打印与任务执行相关的统计信息到控制台。这些任务包括:
- 使用
getCompletedTaskCount()
方法的已执行任务; - 使用
getActiveCount()
方法的在当前时间运行的任务; - 正在等待中的任务,它使用阻塞队列的
size()
方法,而该队列存储了正在等待的任务。
SleepTwoSecondsTask
类实现的 Callable
接口把执行的线程休眠2s,传递10个任务到执行器的 Main
类会使用该任务和其他类型的任务来演示它们的特性。
执行该程序,然后你将会看到该程序是如何展示每个任务的时间片的,这些时间片都是用于展示程序运行以及通过调用 shutdown()
方法的执行器的统计信息的。