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