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