码迷,mamicode.com
首页 > 其他好文 > 详细

Fork/Jion框架

时间:2017-10-04 20:23:18      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:extends   框架   long   rri   logs   java   mem   this   int   

代码段1:

public class demo01 {
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		ForkJoinPool pool = new ForkJoinPool();
		ForkJoinTask<Long> task = new ForkJion(0L, 1000000000L);
		Long sum = pool.invoke(task);
		System.out.println(sum);
		long end = System.currentTimeMillis();
		System.out.println(end - start);
	}
}

class ForkJion extends RecursiveTask<Long> {
	private static final long serialVersionUID = -7432464170367689181L;
	private long start;
	private long ends;
	private static final long th = 10000L;

	public ForkJion(long start, long ends) {
		this.start = start;
		this.ends = ends;
	}

	@Override
	protected Long compute() {
		long length = ends - start;
		if (length <= th) {
			long sum = 0L;
			for (long i = start; i <= ends; i++) {
				sum += i;
			}
			return sum;
		} else {
			long middle = (start + ends) / 2;
			ForkJion left = new ForkJion(start, middle);
			left.fork();
			ForkJion rigth = new ForkJion(middle + 1, ends);
			rigth.fork();
			return left.join() + rigth.join();
		}
	}
}

  2.代码段2

public class demo02 {
public static void main(String[] args) {
	long start = System.currentTimeMillis();
	long sum=0;
	for (int i = 0; i <=1000000000l; i++) {
		sum+=i;
	}
	System.out.println(sum);
	long end = System.currentTimeMillis();
	System.out.println(end-start);
}
}

  在处理大数据的时候,代码段1的时间较代码2短很多,原因是代码1分成很多段并行求值,然后合并求值,所以在大数据中较代码2快,在运算量很小的时候或许较代码2效率低,因为涉及带,线程的开启合并有一定的开销。

Fork/Jion框架

标签:extends   框架   long   rri   logs   java   mem   this   int   

原文地址:http://www.cnblogs.com/gg128/p/7627055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!