为了结合批处理与 CompletableFuture 并使用自定义线程池,我们可以创建一个功能全面的工具类
BatchProcessingUtil。这个工具类将支持以下功能:
批处理遍历列表中的每个元素。
使用自定义线程池执行批处理任务。
返回一个 CompletableFuture 对象以支持异步回调和结果处理。
支持进度跟踪。
下面是具体的实现:
BatchProcessingUtil 工具类
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class BatchProcessingUtil {
/**
* 批处理遍历列表中的每个元素并执行指定的操作,返回一个 CompletableFuture 对象。
*
* @param <T> 列表元素的类型
* @param elements 要遍历的列表
* @param batchSize 每次处理的元素数量
* @param executor 自定义的线程池
* @param consumer 指定的操作
* @return CompletableFuture<Void> 表示所有任务完成的未来对象
*