// 如何让每周四 18:00:00 定时执行任务
public static void main(String[] args) {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 获取周四下午6点30分0秒 的时间
LocalDateTime time = now.withHour(6).withMinute(30).withSecond(0).with(DayOfWeek.TUESDAY);
// 如果当前时间比本周四的时间大,取下一周的周四
if (now.compareTo(time ) > 0 ){
time = time .plusWeeks(1);
}
// 计算当前时间到周四/下周四的 毫秒值
Long initialDelay = Duration.between(now,time ).toMillis();
// 一周的时间间隔
long period = 1000 * 60 * 60 * 24 * 7;
// 任务1
// newScheduledThreadPool:当前时间到初次执行任务的时间间隔;
// period: 任务执行周期
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
pool.scheduleAtFixedRate(() -> {
System.out.println("test");
},initialDelay,period,TimeUnit.MILLISECONDS);
// 任务2
pool.scheduleAtFixedRate(() -> {
System.out.println("test1");
},initialDelay,period,TimeUnit.MILLISECONDS);
}
Java多线程定时执行任务
最新推荐文章于 2024-05-01 19:17:00 发布