JAVA----Quartz SimpleTrigger和CronTrigger 触发器

Trigger

触发器:Trigger,包括:SimpleTrigger和CronTrigger

SimpleTrigger

SimpleTrigger可以实现在一个指定时间段内执行一次作业任务或一个时间段内多次执行作业任务

public class MySimpleSchedule {

    public static void main(String[] args) throws SchedulerException, InterruptedException {
        // 可以指定时间
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 5000);
        Date endDate = new Date();
        endDate.setTime(startDate.getTime() + 5000);

        // 1. 构建Trigger 实例,间隔执行
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
                .startNow() // 开始执行,至少执行一次
                // 默认会一直执行,限制:添加间隔时间, 共执行5次
//                .startAt(startDate)
//                .endAt(endDate)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(2)  // 间隔1s 执行一次
                .repeatForever()).build();  // 重复执行


        // 2. 创建jobDetail, 绑定需执行的类
        JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class)
                .withIdentity("job1", "group1").build();


        // 3. 创建调度器
//        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();

        // 执行, 两个参数:规避并发访问
        scheduler.scheduleJob(jobDetail, trigger);
        System.out.println("--------- scheduler start ---------");
        scheduler.start();

        // 睡眠, 1分钟后
//        TimeUnit.MINUTES.sleep(1);
        Thread.sleep(10000);
        scheduler.shutdown();
        System.out.println("--------scheduler shutdown ------------");
    }
}
CronTrigger

基于日历的作业调度:秒-分-小时-日-月-周-年

public class MyCronSchedule {

    public static void main(String[] args) throws SchedulerException, InterruptedException {

        // 可以指定时间
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 5000);
        Date endDate = new Date();
        endDate.setTime(startDate.getTime() + 5000);

        // 1. 构建Trigger 实例,间隔执行
        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
            .usingJobData("trigger1", "jobDetail1的trigger")
//                .startNow()
//                .startAt(startDate)
//                .endAt(endDate)
                .withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ? *"))
                .build();

        // 2. 创建jobDetail, 绑定需执行的类
        JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class)
                .withIdentity("job1", "group1").build();


        // 3. 创建调度器
//        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();

        // 执行, 两个参数:规避并发访问
        scheduler.scheduleJob(jobDetail, trigger);
        System.out.println("--------- scheduler start ---------");
        scheduler.start();

        // 睡眠, 1分钟后
//        TimeUnit.MINUTES.sleep(1);
        Thread.sleep(10000);
        scheduler.shutdown();
        System.out.println("--------scheduler shutdown ------------");
    }
}

public class test {
	@Scheduled(cron="*/1 * * * * ?")
	public void method(){
		System.out.println(new Date());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值