Quartz

java 任务调度:

public class TimeTaskDemo {
    public static void main(String[] args) {
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("==========>");
            }
        },new Date(System.currentTimeMillis()+1000), 200);
    }
}
View Code

一、Quartz

Quartz就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细.。
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述。

Quartz 调度包的两个基本单元是作业和触发器。作业是能够调度的可执行任务,触发器提供了对作业的调度. 
调度器:调度器用于将与作业触发器关联,一个作业可关联多个触发器,这样每个触发器被可以触发的作业执行;一个触发器可用于控制多个作业,触发触发器时, 
全部作业将获得调度。Quartz的调度器由Scheduler接口体现.。
job(作业):只需实现org.quartz.job接口即可.Job接口包含一个方法 execute(),execute方法体是被调度的作业体。一旦实现Job接口和execute()方法,Quartz确定作业运作的时候,它将调用 execute()方法体。 Job是一个接口只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中 。

触发器:有SimpleTrigger和CronTrigger两种类型。

1、创建一个作业

public class HelloJob {
    private static Logger logger = LoggerFactory.getLogger(HelloJob.class);  
    public HelloJob() {  }  
    public void execute(JobExecutionContext context) throws JobExecutionException {  
        logger.error("我是小禾点点: " + new Date());  
    }  
}

2、调度

 public static void run() throws Exception {  
           // 通过SchedulerFactory获取一个调度器实例  
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            //引进作业程序  
            JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job2", "group1").build();  
            //创建触发器并设置执行时间
            CronTrigger trigger =TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")).build();
            //作业和触发器设置到调度器中  
            Date ft = scheduler.scheduleJob(job, trigger);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());
            //启动调度器  
            scheduler.start(); 
            //scheduler.shutdown();
        } 
原文地址:https://www.cnblogs.com/jalja/p/4598191.html