优化分治解决方案:Fork/Join 框架的应用与比较
1. 并发搜索类(ConcurrentSearch)
ConcurrentSearch 类实现了 findAny()
和 findAll()
方法,其接口与串行版本相同。内部会初始化 TaskManager
对象和第一个任务,并使用 execute
方法将任务发送到默认的 ForkJoinPool
,等待任务完成并写入结果。
findAny()
方法代码如下:
public class ConcurrentSearch {
public static CensusData findAny (CensusData[] data,
List<FilterData> filters, int size) {
TaskManager manager=new TaskManager();
IndividualTask task=new IndividualTask(data, 0,
data.length, manager, size, filters);
ForkJoinPool.commonPool().execute(task);
try {
CensusData result=task.join();
if (result!