From 329746439daf1659f1e8f011d8625192f92206dd Mon Sep 17 00:00:00 2001 From: wangyuan Date: Tue, 14 May 2019 11:31:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=B6=E7=82=B9=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/thread/ThreadManager.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java index d3080e8fd..438a8a80e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -3,10 +3,13 @@ package com.ljsd.jieling.thread; import com.ljsd.jieling.thread.task.DailyOfZeroTask; import com.ljsd.jieling.thread.task.MinuteTask; import com.ljsd.jieling.thread.task.PlatConfigureTask; +import com.ljsd.jieling.util.TimeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ConfigurableApplicationContext; +import java.util.Calendar; +import java.util.Date; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; @@ -65,7 +68,7 @@ public class ThreadManager { // testTask 已秒为单位 延迟10s, 间隔30s为周期执行 int delayForMinute = 60 - (now%60); - int delayForDay = 3600*24 - (now%(3600*24)); + int delayForDay = getDiffZeroTimeSecond(now); scheduledExecutor.scheduleAtFixedRate(platConfigureTask, 10, PlatConfigureTask.SLEEP_INTEVAL_TIME, TimeUnit.SECONDS); scheduledExecutor.scheduleAtFixedRate(new MinuteTask(), delayForMinute, 60, TimeUnit.SECONDS); scheduledExecutor.scheduleAtFixedRate(new DailyOfZeroTask(), delayForDay, 3600*24, TimeUnit.SECONDS); @@ -75,4 +78,15 @@ public class ThreadManager { public ScheduledThreadPoolExecutor getScheduledExecutor() { return scheduledExecutor; } + + private int getDiffZeroTimeSecond(int now){ + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + 1); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.MILLISECOND,0); + calendar.set(Calendar.HOUR,0); + calendar.set(Calendar.SECOND,0); + long time = calendar.getTime().getTime(); + return (int)(time / 1000) - now; + } }