27-结果分析
结果分析
本节实现了扩展 ForkJoinTask 类的 MyWorkerTask 类。这是你自己的基类,它可以实现在 ForkJoinPool 执行器中执行的任务,并且可以充分利用执行器的所有优点。因为它是工作窃取算法(work-stealing algorithm),所以这个类相当于 RecursiveAction 和 RecursiveTask 类。
当扩展 ForkJoinTask 类时,必须实现以下3种方法。
setRawResult():该方法用于建立任务结果。由于任务不会返回任何结果,因此请将该方法留空。getRawResult():该方法用于返回任务结果。由于任务不会返回任何结果,因此该方法返回null。exec():该方法实现了任务逻辑。在这种情况下,将逻辑委派给compute()抽象方法(作为RecursiveAction和RecursiveTask类)。但是,在exec()方法中,可以测量方法的执行时间,并将其打印到控制台。
最后,在本案例的主类中,创建了一个由10000个元素组成的数组、一个 ForkJoinPool 执行器和一个 Task 对象来处理整个数组。执行本程序,将看到在执行的不同任务时如何在控制台中打印其执行时间。