思路:启动newSingleThreadScheduledExecutor单线程池,延时结束时间的毫秒数和现在的毫秒数的差
long now = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.clear();
//指定时间的毫秒数 PropKit.get("") 可以替换成自己的日期
calendar.set(Integer.parseInt(PropKit.get("year")),
Integer.parseInt(PropKit.get("month")),
Integer.parseInt(PropKit.get("day")),
Integer.parseInt(PropKit.get("hour")),
Integer.parseInt(PropKit.get("minutes")),
Integer.parseInt(PropKit.get("second"))); // Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
long millis = calendar.getTimeInMillis();
long start = millis - now;
Log log = Log.get(); // hutool的工具类
log.info("距离结束还有{}毫秒",start);
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.schedule(()->{
// 执行业务
},start,TimeUnit.MILLISECONDS);