Java 中的 ScheduledExecutorService 对于以固定间隔或固定延迟重复任务非常方便。我想知道是否有类似现有 ScheduledExecutorService 的东西,可以让您指定一天中的某个时间来安排任务,而不是间隔,即“我希望这个任务每天上午 10 点触发”。

我知道你可以使用 Quartz 来实现这一点,但如果可能的话,我宁愿不使用该库(它是一个很棒的库,但由于某些原因我不想拥有依赖项)。

其他提示

更多的搜索结果出现了 CronExecutor服务 在 HA-JDBC 中。有趣的是,它依赖于 Quartz Cron表达式 类,但仅此而已。那还不错。

更新:我已经修复了损坏的链接以指向新版本,但我不知道这是否是唯一的依赖项

ThreadPoolTaskScheduler,可以使用的,只要外部螺纹管理不是一个要求。在内部,它代表一个 实例。 ThreadPoolTaskScheduler 实现的弹簧 TaskExecutor 接口,所以一个实例可以用于异步执行以及计划,并有可能再次发生,处决。

在那里如CronTrigger()需要在cronExpression http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html

更多信息,这个解决方案参阅春天文档: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;

public class CronTriggerSpringTest{
public static void main(String args[]){
    String cronExpression = "0/5 * * * * *";
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.initialize();
    scheduler.schedule(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello Date:"+new Date());
        }
    }, new CronTrigger(cronExpression));
}
}

当您使用您scheduleAtFixedRate提供一个延迟。因此,延迟可以的差异上午10点和周期为24小时。 这可能漂移了一下,即使有一个计时器,以便你可以做的是安排每个时间将自身添加到ScheduledExecutorService的具有适当延迟的任务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top