81,091
社区成员
发帖
与我相关
我的任务
分享
ConcurrentSkipListMap<String, Object> linkedHashMap = new ForkJoinPool().invoke(new FrSetGymTask(new ConcurrentSkipListMap<String, Object>(), maps, 0, maps.size()));
public class FrSetGymTask extends RecursiveTask<ConcurrentSkipListMap<String, Object>> {
/**
* 馆子列表及各馆子下的菜品列表
*/
private ConcurrentSkipListMap<String, Object> skipListMap;
/**
* 菜品列表
*/
private List<Map<String, String>> maps;
private int start;
private int end;
public FrSetGymTask(ConcurrentSkipListMap<String, Object> skipListMap, List<Map<String, String>> maps, int start, int end) {
this.skipListMap = skipListMap;
this.maps = maps;
this.start = start;
this.end = end;
}
@Override
protected ConcurrentSkipListMap<String, Object> compute() {
if (end - start < 5) {
for (int i = 0; i < maps.size(); i++) {
Map<String, String> map = maps.get(i);
if (map != null) {
// 查找对应场馆的项目列表
FrSetGymDao frSetGymDao = (FrSetGymDao)SpringUtils.getBean("frSetGymDao");
List<Map<String, String>> list = frSetGymDao.findListByModelId(map.get("id"));
skipListMap.put(map.get("navName"), list);
}
}
} else {
//分隔任务
int middle = (start + end) / 2;
FrSetGymTask left = new FrSetGymTask(skipListMap, maps, start, middle);
FrSetGymTask right = new FrSetGymTask(skipListMap, maps, middle + 1, end);
left.fork();
right.fork();
left.join();
right.join();
}
return skipListMap;
}
}