大数据分批执行方法

本文介绍了在大数据场景下,如何使用Java进行分批处理的两种方法:无返回值和有返回值的方法。无返回值方法适用于执行清理任务,而有返回值方法则适用于需要收集处理结果的情况。通过这两个方法,可以有效地处理大量数据,避免一次性加载所有数据导致的性能问题。同时,代码中还记录了批量执行的耗时,方便性能分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎使用Markdown编辑器

在游戏额数据比较大清空下,可能需要分批执行方法(比如数据库操作),记录一些通用分批处理方法

无返回值方法

public static <T> void batchOperate(List<T> list, Consumer<List<T>> consumer, int pageSize) {
        long start = System.currentTimeMillis();
        int endIndex;
        for (int i = 0; i <list.size() ; i += pageSize) {
            endIndex = Math.min(i+pageSize,list.size());
            if(i >= endIndex){
                break;
            }
            List<T> ts = list.subList(i, endIndex);
            consumer.accept(ts);
        }
        log.debug("批量执行耗时【{}】ms",System.currentTimeMillis() - start);
    }

有返回值方法

public static <T,R> List<R> batchOperate(List<T> list, Function<List<T>,List<R>> func, int pageSize) {
        long start = System.currentTimeMillis();
        List<R> result = new ArrayList<>(list.size());
        int endIndex;
        for (int i = 0; i <list.size() ; i += pageSize) {
            endIndex = Math.min(i+pageSize,list.size());
            if(i >= endIndex){
                break;
            }
            List<T> ts = list.subList(i, endIndex);
            result.addAll(func.apply(ts));
        }

        log.debug("批量执行耗时【{}】ms",System.currentTimeMillis() - start);
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值