fork/join框架_java forkjoinpool_fork join框架(8)

电脑杂谈  发布时间:2017-04-10 18:05:20  来源:网络整理

12.采用groupResults()方法将这两个任务返回的值相加。最后,返回任务计算的结果。

    try {

        result=groupResults(task1.get(),task2.get());

    } catch (InterruptedException | ExecutionException e) {

        e.printStackTrace();

    }

}

return result;

13.实现processLines()方法。接收4个参数,一个字符串document矩阵,start属性,end属性和任务将要查找的词word的属性。

private Integer processLines(String[][] document, int start, int

end,String word) {

14.为任务所要处理的每一行,创建一个LineTask对象,然后存储在任务列表里。

    List<LineTask> tasks=new ArrayList<LineTask>();

    for (int i=start; i<end; i++){

    LineTask task=new LineTask(document[i], 0, document[i].

    length, word);

    tasks.add(task);

}

15.调用invokeAll()方法执行列表中所有的任务。

invokeAll(tasks);

16.合计这些任务返回的值,并返回结果。

int result=0;

for (int i=0; i<tasks.size(); i++) {

    LineTask task=tasks.get(i);

    try {

        result=result+task.get();

    } catch (InterruptedException | ExecutionException e) {

        e.printStackTrace();

    }

}

return new Integer(result);

17.实现groupResults()方法。它将两个数字相加并返回结果。

private Integer groupResults(Integer number1, Integer number2) {

    Integer result;

    result=number1+number2;

    return result;

}

18.创建名为LineTask的类,并继承RecursiveTask类,RecursiveTask类的泛型参数为Integer类型。这个RecursiveTask类实现了一个任务,用来计算所要查找的词在一行中出现的次数。

public class LineTask extends RecursiveTask<Integer>{

19.声明类的serialVersionUID属性。这个元素是必需的,因为RecursiveTask的父类ForkJoinTask实现了Serializable接口。声明一个名为line的私有String数组属性和两个名为start和end的私有int属性。最后,声明一个名为word的私有String属性。

private static final long serialVersionUID = 1L;

private String line[];

private int start, end;

private String word;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40557-8.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 河原木志穗
      河原木志穗

      重庆晨报的记者收了多少钱啊

    • 常江龙
      常江龙

      小问题不断

    热点图片
    拼命载入中...