当前位置:嗨网首页>书籍在线阅读

07-合并任务的执行结果

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.3 合并任务的执行结果

fork/join框架可以执行任务并返回结果。这类任务必须实现 RecursiveTask 类,该类继承了 ForkJoinTask 类,并实现了Executor框架的 Future 接口。

在该任务内部,开发者需要使用Java API文档推荐的格式:

if (problem size > size){
  tasks=Divide(task);
  execute(tasks);
  joinResults()
  return result;
} else {
  resolve problem;
  return result;
}

如果该任务需要解决的问题规模超过了预定义的大小,则需要分割任务为更多个子任务,并用fork/join框架执行它们。任务执行完毕后,初始任务会收集全部子任务生成的返回结果,并组成最终返回结果。最后,当池中的初始任务执行完毕时,可以获取到初始任务的执行结果,即整个问题的返回结果。

本节将会通过开发一个在文档中查找单词的应用,来了解如何用fork/join框架解决这类问题。需要实现如下两类任务。

  • 文档任务,在一个文档的一个行集合中查找一个单词。
  • 行任务,在文档的一部分中查找一个单词。

所有任务都返回给定单词在文档或者行中出现的次数。本节将使用Java并发API提供的默认的fork/join池开发。