代码之家  ›  专栏  ›  技术社区  ›  GaryF

在Java中是否有一个类似于PraceDeXECutoService的Cron实现?

  •  4
  • GaryF  · 技术社区  · 16 年前

    Java中的PraceDeXECutoService非常适合于以固定间隔或固定延迟重复任务。我想知道是否有一个类似于现有的scheduledExecutorService的服务允许您指定一天中的某个时间来计划任务,而不是一个间隔,即“我希望此任务在每天上午10点启动”。

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

    5 回复  |  直到 8 年前
        1
  •  2
  •   neesh    16 年前

    你可以使用 Timer 班级。具体来说,scheduleAtfixedRate(TimerTask任务、日期FirstTime、长周期)。您可以将任务设置为在特定日期的上午10点开始,每24小时重复一次。

        2
  •  2
  •   GaryF    10 年前

    有更多的搜索出现了 CronExecutorService 在HA-JDBC中。有趣的是,它对石英的依赖性在于 CronExpression 上课,但就是这样。那还不错。

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

        3
  •  1
  •   Peter Lawrey    16 年前

    使用scheduleAtfixedRate时,会提供一个延迟。所以延迟时间可以是上午10点,周期是24小时。 这可能会有点漂移,即使有一个计时器,所以您所能做的就是调度一个任务,该任务将自己添加到scheduleExecutorService中,每次都有适当的延迟。

        4
  •  1
  •   l_39217_l    16 年前
        5
  •  1
  •   vijay    8 年前

    线程池任务调度程序,可以在不需要外部线程管理时使用。在内部,它委托给 计划执行或服务 实例。 线程池任务计划程序 实际上实现了Spring_ 任务执行器 接口,以便一个实例可以尽快用于异步执行,以及计划的、可能重复的执行。

    其中,as cronttrigger()接受cronExpression http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html

    有关此解决方案的更多信息,请参阅Spring文档: 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));
    }
    }