import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
public class Test2 {
public static void main(String[] args) throws Exception {
// ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 6, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10));
CompletableFuture<?> future = CompletableFuture
// 執行異步任務
.supplyAsync(() -> {
int result = new Random().nextInt(100);
System.out.println("任務A:" + result);
return result;
}).thenComposeAsync((current) -> {
List<CompletableFuture<?>> f1s = new ArrayList<>(); //
for(int i=1;i<4;i++) {
CompletableFuture<?> f1 = CompletableFuture.supplyAsync(()->{return "";}).thenComposeAsync((fb) -> {
System.out.println("f1執行結束");
//
List<CompletableFuture<?>> f2s = new ArrayList<>(); //
for (int j = 1; j < 4; j++) {
CompletableFuture<String> f2 = CompletableFuture.supplyAsync(() -> {
System.out.println("f2執行結束");
return ".f2結果";
});
f2s.add(f2);
}
CompletableFuture<?> t = CompletableFuture.allOf(f2s.toArray(new CompletableFuture[f2s.size()]));
return t;
//
});
f1s.add(f1);
}
CompletableFuture<?> tmp = CompletableFuture.allOf(f1s.toArray(new CompletableFuture[f1s.size()]));
return tmp;
});
System.out.println(future.get());
System.out.println("end");
// executor.shutdown();
}
}