import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author: baifan
* @date: 2021/3/8
*/
public class DemoTest {
public static void main(String[] args) {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(4, 5, 3000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(5));
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
ids.add(3);
CompletableFuture<Integer>[] completableFutures = ids.stream().map(id -> {
return CompletableFuture.supplyAsync(() -> getNewId(id), threadPoolExecutor);
}).toArray(CompletableFuture[]::new);
// 等待所有任务执行完
CompletableFuture.allOf(completableFutures).join();
for (CompletableFuture<Integer> completableFuture : completableFutures) {
completableFuture.whenComplete((result, e) -> {
System.out.println(result);
});
//System.out.println(completableFuture.get());
}
return;
}
public static int getNewId(int id) {
return id + 3;
}
}
CompletableFuture批量异步处理非get()阻塞方式
最新推荐文章于 2024-05-14 20:34:49 发布