Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。

通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。

import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.TimeUnit;

public class ForkJoinPoolTest {

	public static void main(String[] args) throws Exception{
		testHasResultTask();
	}
	
	public static void testHasResultTask() throws Exception {
		int result1 = 0;
		for (int i = 1; i <= 1000000; i++) {
			result1 += i;
		}
		System.out.println("循环计算 1-1000000 累加值:" + result1);

		ForkJoinPool pool = new ForkJoinPool();
		ForkJoinTask<Integer> task = pool.submit(new CalculateTask(1, 1000000));
		int result2 = task.get();
		System.out.println("并行计算 1-1000000 累加值:" + result2);
		pool.awaitTermination(2, TimeUnit.SECONDS);
		pool.shutdown();
	}
}

ForkJoinPool in Java: An In-Depth Guide