标签: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效率低,因为涉及带,线程的开启合并有一定的开销。
标签:extends 框架 long rri logs java mem this int
原文地址:http://www.cnblogs.com/gg128/p/7627055.html