/** * */ package com.vip.saturn.job.executor; import com.vip.saturn.job.internal.statistics.ProcessCountResetTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * @author chembo.huang */ public class ResetCountService { static Logger log = LoggerFactory.getLogger(ResetCountService.class); private Timer countResetTimer; private ProcessCountResetTask countResetTask; public ResetCountService(String executorName) { countResetTimer = new Timer(executorName + "-reset-count-at-midnight"); countResetTask = new ProcessCountResetTask(executorName); } // 每天临晨零点清理统计信息 public void startRestCountTimer() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); // 凌晨0点 calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date = calendar.getTime(); // 避免任务立即执行 if (date.before(new Date())) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, 1); date = startDT.getTime(); } countResetTimer.schedule(countResetTask, date, 24 * 60 * 60 * 1000); //时间间隔(一天) log.info("msg=start the task of resetting statistics data"); } public void shutdownRestCountTimer() { countResetTimer.cancel(); } }