自己封装一个类

package com.anllin.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ScheduleUtil
{
private static DateFormat format()
{
return new SimpleDateFormat("HH:mm:ss:SSS");
}

private static Date parseTime(String time) throws ParseException
{
return format().parse(time);
}

private static long getOneDayMilliseconds()
{
return 24 * 60 * 60 * 1000L;
}

private static long getMillisecondsInOneDayBetween(String now, String future) throws ParseException
{
Date nowDate = parseTime(now);
Date futureDate = parseTime(future);
long nowTime = nowDate.getTime();
long futureTime = futureDate.getTime();
if (futureTime > nowTime)
{
return futureTime - nowTime;
}
else
{
return (futureTime + getOneDayMilliseconds()) - nowTime;
}
}

public static void scheduleEveryday(ScheduledThreadPoolExecutor executor, Runnable command,
String executedEverydayAt) throws ParseException
{
long initialDelay = getMillisecondsInOneDayBetween(format().format(new Date()), executedEverydayAt);
long period = getOneDayMilliseconds();
executor.scheduleAtFixedRate(command, initialDelay, period, TimeUnit.MILLISECONDS);
}
}

调用方法

public static void main(String[] args) throws Exception
{
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5);
String executedEverydayAt = "12:00:00:000";
ScheduleUtil.scheduleEveryday(executor, new Runnable(){
public void run()
{
System.out.println("执行业务逻辑");
}
}, executedEverydayAt);
}




相关文章:

  • 2022-12-23
  • 2021-06-26
  • 2021-05-20
  • 2022-12-23
  • 2022-02-27
  • 2022-12-23
  • 2022-01-01
猜你喜欢
  • 2022-12-23
  • 2021-11-30
  • 2021-08-29
  • 2021-07-31
  • 2022-12-23
相关资源
相似解决方案