java定时任务

又有代码要删除了,有些小工具如果不放在博客中,可能又无影无踪了。所以还是整理一下吧。

之前在linux上,会用contab来定时执行任务。一直想在java上也有这么个简单方便的工具就好了。之前一直自己干写,直到发现了quartz。

1.介绍

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs.
官网在这里

2.代码示例


JobDetail job = JobBuilder.newJob(AnalyseJob.class).build();
        Trigger trigger = newTrigger()
                .withSchedule(cronSchedule("0 0 4 * * ?"))//每天早上4点触发,统计前一天的数据
                .build();
        System.out.println(trigger.getStartTime());
        SchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        scheduler.scheduleJob(job, trigger);
        scheduler.start();

而AnalyseJob是这样的:


    public static class AnalyseJob implements Job {
        public AnalyseJob() {}
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            // do some thing
        }

是不是超级简单,具体的时间定义规则有很多,可以查看官网。

comments powered by Disqus