首页 > 编程知识 正文

forkjoin线程池,反汇编教程

时间:2023-05-04 04:25:39 阅读:21030 作者:1132

1ForkJoin (拆分合并中将大任务拆分为小任务) ForkJoin是JDK1.7,可以并行执行任务! 提高效率。 在大数据中会更快!

大数据中: MapReduce核心思想-把大任务分成小任务!

1福瑞克琼的特点:工作偷窃! 实现原理是两端队列! 上上下下都能拿到任务执行!

ForkJoin的使用方法?

ForkJoin的计算类

public class test { publicstaticvoidmain (string [ ] args )//传统程序员表示法int sum=0; for(intI=0; i 10000000; I ) { sum =i; }system.out.println(sum; }1、在ForkJoinPool中执行

2、计算任务执行(forkjointask? 任务)

3、计算类继承福瑞克琼塔斯克

import Java.util.concurrent.recursive task; publicclassforkjoindemoextendsrecursivetasklong { privatelongstar; 私密长结束; /**阈值* /私有长时间=1000000 l; Publicforkjoindemo(longstar,long end ) { this.star=star; this.end=end; } /** *计算方法* @ return */@ overrideprotectedlongcompute () if ) (end-star ) temp ) { Long sum=0L; for(longI=star; I结束; I ) { sum =i; } return sum; (用else(/forkjoin分割计算)/1 .平均值longmiddle=(starend )/2; forkjoindemoforkjoindemo1=newforkjoindemo (star,middle ); //拆分任务,并将线程推入线程队列forkJoinDemo1.fork (); forkjoindemoforkjoindemo2=newforkjoindemo (middle,end ); forkJoinDemo2.fork (; long taskSum=forkJoinDemo1.join () forkJoinDemo2.join ); 返回任务和; }}测试

package com.marchsoft.forkjoin; import Java.util.concurrent.execution exception; import Java.util.concurrent.forkjoinpool; import Java.util.concurrent.forkjointask; import Java.util.stream.long stream; publicclassforkjointest { privatestaticfinallongsum=20 _ 0000 _ 0000; publicstaticvoidmain (字符串[ ] args ) throws ExecutionException,InterruptedException { test1; test2(; test3(; } /** *常规方法*/public static void test1 () longstar=system.current time millis ); long sum=0L; for (长gi=1; i SUM; I ) { sum =i; } longend=system.current time millis (; system.out.println(sum; System.out.println ('时间: ' (结束星); system.out.println (---------); }/***forkjoin方法*/publicstaticvoidtest2(throwsexecutionexception, 使用interrupted exception { longstar=system.curre er }的forkjoinpoolforkjoinpool=newforkjoinpool (forkjointasklongtask=ngtask ) forkjointasklongsubmit=forkjoinpool.submit (task; //任务Long along=submit.get (; system.out.println(Along; longend=system.current time millis (; System.out.println ('时间: ' (结束星); system.out.println (---------); }/* * *使用流*/public static void test3() longstar=system.current time millis ); long sum=long stream.range closed (0l,20_0000_0000L ).parallel ).reduce(0) 0,Long:sum;//范围关闭[ ]范围[ ] system.out.println (sum; longend=system.current time millis (; System.out.println ('时间: ' (结束星); system.out.println (---------); }

long sum=long stream.range close (0l,20_0000_0000L ).parallel ).reduce(0) 0,Long:sum; //rangeClose[] range[使用并行流计算整个计算,提高效率。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。