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

27-结果分析

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

结果分析

本节实现了扩展 ForkJoinTask 类的 MyWorkerTask 类。这是你自己的基类,它可以实现在 ForkJoinPool 执行器中执行的任务,并且可以充分利用执行器的所有优点。因为它是工作窃取算法(work-stealing algorithm),所以这个类相当于 RecursiveActionRecursiveTask 类。

当扩展 ForkJoinTask 类时,必须实现以下3种方法。

  • setRawResult() :该方法用于建立任务结果。由于任务不会返回任何结果,因此请将该方法留空。
  • getRawResult() :该方法用于返回任务结果。由于任务不会返回任何结果,因此该方法返回 null
  • exec() :该方法实现了任务逻辑。在这种情况下,将逻辑委派给 compute() 抽象方法(作为 RecursiveActionRecursiveTask 类)。但是,在 exec() 方法中,可以测量方法的执行时间,并将其打印到控制台。

最后,在本案例的主类中,创建了一个由10000个元素组成的数组、一个 ForkJoinPool 执行器和一个 Task 对象来处理整个数组。执行本程序,将看到在执行的不同任务时如何在控制台中打印其执行时间。