首页 > 解决方案 > spring ThreadPoolTask​​Scheduler 不使用 Instant 运行计划

问题描述

ThreadPoolTaskScheduler s = new ThreadPoolTaskScheduler();
s.initialize();
s.setPoolSize(1);
// Date date = DateUtils.parseDate("20190618 00:10:40", "yyyyMMdd HH:mm:ss");
s.schedule(() -> {
    System.out.println("a");
}, LocalDateTime.of(2019, 6, 18, 0, 10, 40).toInstant(ZoneOffset.UTC));

什么时候是时间,a不是用Instant参数打印,而是用Date参数显示。

标签: javaspring-boot

解决方案


根据ConcurrentTaskScheduler.schedule()方法,目前它不支持Instant Class,因此您必须尝试仅将 Date 或 Trigger 类型作为 schedule 方法的第二个参数。因此,您可以将 Instant 转换为 Date 类型并尝试这样:

ThreadPoolTaskScheduler s = new ThreadPoolTaskScheduler();
s.initialize();
s.setPoolSize(1);
s.schedule(() -> System.out.println("a"), Date.from(LocalDateTime.of(2019, 6, 18, 0, 10, 40).toInstant(ZoneOffset.UTC)));

推荐阅读