public static <P, T> List<CompletableFuture<T>> multiThreadRun(Function<P, T> run, Collection<P> list, int threadSize, Executor executor, boolean waitRunFinal) { List<CompletableFuture<T>> cf = new ArrayList<>(threadSize); for (P obj : list) { cf.add(CompletableFuture.supplyAsync(() -> run.apply(obj), executor)); if (waitRunFinal && cf.size() == threadSize) { cf.forEach(CompletableFuture::join); cf.clear(); } } if(waitRunFinal) { cf.forEach(CompletableFuture::join); } return cf; }
标签:waitRunFinal,多线程,run,cf,threadSize,CompletableFuture,工具,执行 From: https://www.cnblogs.com/math-and-it/p/17667951.html