当前位置:嗨网首页>书籍在线阅读

05-结果分析

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

结果分析

在本节中,我们通过扩展 ThreadPoolExecutor 类并重写它的4个方法来实现自定义的执行器。 beforeExecute()afterExecute() 方法都是用于计算该任务的执行时间的, beforeExecute() 方法是在任务执行之前执行的。在本案例中,我们使用 HashMap 来存储任务的开始日期, afterExecute() 方法是在任务执行之后执行的。从 HashMap 中可以获得任务的 startTime ,然后计算它与当前日期的差值,以此获得该任务的执行时间。还可以重写 shutdown()shutdownNow() 方法来打印与任务执行相关的统计信息到控制台。这些任务包括:

  • 使用 getCompletedTaskCount() 方法的已执行任务;
  • 使用 getActiveCount() 方法的在当前时间运行的任务;
  • 正在等待中的任务,它使用阻塞队列的 size() 方法,而该队列存储了正在等待的任务。

SleepTwoSecondsTask 类实现的 Callable 接口把执行的线程休眠2s,传递10个任务到执行器的 Main 类会使用该任务和其他类型的任务来演示它们的特性。

执行该程序,然后你将会看到该程序是如何展示每个任务的时间片的,这些时间片都是用于展示程序运行以及通过调用 shutdown() 方法的执行器的统计信息的。