import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
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) {
try {
System.out.println(completableFuture.get());
} catch (Exception e) {
e.printStackTrace();
}
}
return;
}
public static int getNewId(int id) {
return id + 3;
}
}
使用CompletableFuture批量异步处理
最新推荐文章于 2023-06-15 22:24:28 发布