定时分批次执行某一方法

package com.test.task;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.test.GoodsService;
import com.test.DateTools;
import com.test.MailUtil;

@Component
public class GoodsTask {

    @Autowired
    private GoodsService goodsService;

    private final Logger logger = LoggerFactory.getLogger(GoodsTask.class);
    /**
     * 及时推送
     */

    private void updateGoodsInfo(String page_no) {
        try {
            countNum();
        } catch (Exception e) {
            logger.error("page_no + "页同步商品异常", e);
        }
    }

    class GoodsThread implements Runnable {

        @Override
        public void run() {
            for (int i = 1; i < 6; i++) {
                try {
                    updateGoodsInfo(String.valueOf(i));
                    Thread.sleep(60 * 1000*5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }
    }

    @Scheduled(cron = "0 59 15 *  * ?")
    public void runm() {
        new Thread(new GoodsThread()).start();
    }


    private  void  countNum(){
        for(int i=0;i<500;i++){
            System.out.println("第"+i+"个商品更新");
        }
    }
}

在Java中,可以使用定时器(Timer)或者调度线程池(ScheduledThreadPoolExecutor)来实现定时同步分批次处理的功能。 首先,使用Timer类来定时执行任务。可以创建一个定时器对象,并使用其schedule方法来指执行的任务和执行时间间隔。在任务执行方法中,可以通过控制台输出或者日志记录的方式来观察任务的执行情况。 其次,使用调度线程池来控制任务的执行。可以通过创建一个ScheduledThreadPoolExecutor对象,并使用其scheduleWithFixedDelay方法来实现定时执行任务的功能。需要指任务的周期和时间单位,然后在任务执行方法中编写具体的业务逻辑。 对于分批次处理的需求,可以通过使用计数器或者标志位来控制每次处理的数据量。例如,在任务执行方法中,先从数据库或者其他数据源中查询要处理的数据,然后按照事先设好的批处理大小,进行分批次处理。可以使用循环来控制每次处理的数据量,并在每一次处理完成之后,更新计数器或者标志位的值,以便下一次处理。 需要注意的是,定时同步分批次处理任务可能会耗费系统资源,如内存和CPU等,所以要根据实际情况合理设计任务的执行周期和每次处理的数据量,以避免对系统性能造成过大的影响。 总之,通过Java的定时任务和调度线程池,我们可以实现定时同步分批次处理的功能,从而满足实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值