不知道题主是怎么使用这个方法的...我一般就直接起异步任务然后用到指定线程池的,传参的话,可以直接在CompletableFuture.supplyAsync里的参数直接使用就是了,举个栗子
public static void main(String[] args) {
// 起10个线程的线程池
ExecutorService myExecutor = Executors.newFixedThreadPool(10);
// length和param就是所谓的父线程的参数吧
Long length = 1l;
BigDecimal param = new BigDecimal(0);
// 创建10个异步任务,采用的线程池就是自己创建的线程池myExecutor,然后调用doSomeThing里可以直接把父参数传入子方法
List> collect = IntStream.rangeClosed(1, 10).mapToObj(i -> CompletableFuture.supplyAsync(() -> doSomeThing(length, param), myExecutor)).collect(Collectors.toList());
List longs = collect.stream().map(CompletableFuture::join).collect(Collectors.toList());
System.out.println(longs);
}
/**
* 这个私有方法到时候就是子线程执行的地方
*/
private static Long doSomeThing(Long length, BigDecimal param) {
return length;
}
不知道这种使用方法有没有到达你想要的要求啊