26-使用forkjoin框架替代执行器
11.9 使用fork/join框架替代执行器
执行器使我们避免线程的创建和管理。实现 Runnable
或 Callable
接口可以开发任务,然后将其发送给执行器。执行器有一个线程池,它会安排其中的一个线程去执行任务。
Java 7通过fork/join框架提供了一种新的执行器,它实现在 ForkJoinPool
类中,专为可以由分治法拆分成多个更小任务的问题而设计。在为fork/join框架实现任务时,必须要检查待解决问题的大小。如果它大于预定义的大小,那么就将其拆分成两个问题或更多个子问题,然后创建与拆分结果相同数量的子任务。该任务使用 fork()
操作将这些子任务发送给 ForkJoinPool
类,并使用 join()
操作等待它们的执行完成。
对于这种问题,fork/join拥有着比经典的执行器更好的性能。本节要实现的案例将验证这一点。