public static void main(String[] args) {
Map<String, String> result = new ConcurrentHashMap<String, String>();
//1
result = CompletableFuture.supplyAsync(()-> getItemMap())
.thenCombine(CompletableFuture.supplyAsync(()-> getSuperItemMap()),(v1, v2)->{
Map<String, String> mid = new ConcurrentHashMap<>(8);
if(!v1.isEmpty()){
mid.putAll(v1);
}
if(!v2.isEmpty()){
mid.putAll(v2);
}
return mid;
}).join();
System.out.println(result);
//2
List<CompletableFuture<Map<String, String>>> itemInfo = getItemInfo();
itemInfo.addAll(getSuperItem());
Map<String, String> stringStringMap = itemMapResult(itemInfo);
System.out.println(stringStringMap);
}
private static List<CompletableFuture<Map<String,String>>> getItemInfo(){
List<String> itemIdList = Lists.newArrayList("1","2","3","4");
List<List<String>> partition = Lists.partition(itemIdList, 2);
return partition.stream().map(a->{
return CompletableFuture.supplyAsync(()-> getItemMap());
}).collect(Collectors.toList());
}
private static List<CompletableFuture<Map<String,String>>> getSuperItem(){
List<String> itemIdList = Lists.newArrayList("1","2","3","4");
List<List<String>> partition = Lists.partition(itemIdList, 2);
return partition.stream().map(a->{
return CompletableFuture.supplyAsync(()-> getSuperItemMap());
}).collect(Collectors.toList());
}
private static Map<String, String> itemMapResult(List<CompletableFuture<Map<String,String>>> lt){
Map<String, String> map = new HashMap<>(16);
if(CollectionUtils.isNotEmpty(lt)){
CompletableFuture.allOf(lt.toArray(new CompletableFuture[lt.size()])).join();
List<Map<String,String>> midResult = lt.stream().map(a-> {
try {
return a.get();
} catch (Exception e) {
}
return null;
}).collect(Collectors.toList());
map = midResult.stream().reduce(new HashMap<>(),(a,b)->{a.putAll(b);return a;});
}
return map;
}
static Map<String,String> getItemMap(){
Map<String, String> result = new ConcurrentHashMap<String, String>();
result.put("1","1");
return result;
}
static Map<String,String> getSuperItemMap(){
Map<String, String> result = new ConcurrentHashMap<String, String>();
result.put("2","2");
return result;
}
CompletableFuture
最新推荐文章于 2025-03-26 11:03:19 发布