任务多线程处理返回

34 阅读1分钟
// 自定义线程池
private final ExecutorService executor = Executors.newFixedThreadPool(5);

// 任务集合
List<?> list


// 提交任务线程
List<CompletableFuture<?>> futures = list.stream().map(
        obj -> CompletableFuture.supplyAsync(
                        () -> func(obj)
                        , executor)
                .exceptionally(
                        e -> {
                            // 出现异常的处理业务
                            return obj;
                        })
).collect(Collectors.toList());


// 收集任务完成结果内容
List<?> res = futures.stream().map(CompletableFuture::join).collect(Collectors.toList());


// 任务处理方法
private ? func(? num) {
    return obj;
}