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
小问题不断
重庆晨报的记者收了多少钱啊