【Java】批量处理工具类
2023-12-19 05:51:53
目录
批量处理接口?
public interface BatchFunction<I, O> {
O execute(I i);
String getFunctionName();
}
批量处理抽象方法
public abstract class AbstractBatchFunction<I, O> implements BatchFunction<I, O>{
@Override
public String getFunctionName(){
return this.getClass().getName();
}
}
批量处理工具
public class BatchUtil {
public static <I, O> List<O> batch(List<I> inputList, final BatchFunction<I, O> batchFunction){
return batch(inputList, batchFunction, BatchExecutorService.THREAD_POOL_EXECUTOR);
}
public static <I, O> List<O> batch(List<I> inputList, final BatchFunction<I, O> batchFunction, ExecutorService executorService){
long startTime = System.currentTimeMillis();
String functionName = batchFunction.getFunctionName();
List<O> batchOutput = new ArrayList<>();
List<Callable<O>> batchCallableList = new ArrayList<>();
for(final I input : inputList){
batchCallableList.add(new Callable<O>() {
@Override
public O call() throws Exception {
return batchFunction.execute(input);
}
});
}
try{
List<Future<O>> futureList = executorService.invokeAll(batchCallableList, 2000, TimeUnit.MILLISECONDS);
for(Future<O> future : futureList){
try{
O o = future.get();
if(o == null){
continue;
}
batchOutput.add(o);
}catch (Exception e){
//日志
}
}
}catch (Exception e){
//日志
}
return batchOutput;
}
}
文章来源:https://blog.csdn.net/weixin_38838143/article/details/135074673
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!