import java.util.Objects;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
public class TestFutureJoin {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//线程池
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(200);
executor.setMaxPoolSize(200);
executor.setQueueCapacity(200);
executor.setThreadNamePrefix("asyncExecutor-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
executor.initialize();
//打印执行线程
System.out.println("task-thread:" + Thread.currentThread().getName());
//构建数组
List<CompletableFuture<String>> futures = new ArrayList<>();
//count
CompletableFuture<String> commentCountFuture = CompletableFuture
.supplyAsync(() -> {
System.out.println("count-logic-thread:" + Thread.currentThread().getName());
return "123";
}, executor);
futures.add(commentCountFuture);
//setCommentLikedCount
CompletableFuture<String> commentCountFuture1 = CompletableFuture
.supplyAsync(() -> {
int j = 1 / 0;
System.out.println(j);
//模拟Http请求
HashMap<String, Long> map = new HashMap<>();
map.put("count1", 2222L);
System.out.println("count-logic-thread:" + Thread.currentThread().getName());
return "123";
}, executor);
futures.add(commentCountFuture1);
//聚合
CompletableFuture<Void> allFutureList = CompletableFuture
.allOf(futures.toArray(new CompletableFuture[0]));
System.out.println("\n\n\n");
try {
//执行
allFutureList.join();
} catch (Exception e) {
e.printStackTrace();
System.out.println("get");
}
List<String> result = futures.stream().map(future -> {
return future.join();
// try {
// return future.join();
// } catch (Exception e) {
// e.printStackTrace();
// }
// return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
System.out.println("end");
System.out.println(result);
}
}
CompletableFuture的demo
最新推荐文章于 2023-07-12 20:00:09 发布