标签: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