Quartz任务调度的单元测试

本文介绍了一个使用Quartz调度器实现的任务调度示例。通过创建JobDetail和SimpleTrigger实例,并利用TriggerUtils工具类简化配置过程,实现了任务的立即启动并重复执行。此外,还演示了如何让主线程睡眠以确保任务线程正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#前言
  通过Threa.currentThread.sleep()方法让主线程睡眠一段时间,使调度器可以继续执行任务调度的工作;否则在调度器启动后,因为主线程立即退出,寄生于主线程的调度器也立即关闭,调度器中的任务都将相应销毁,这将导致看不到实际的运行效果。
  在单元测试时,使主线程睡眠一段时间以便让任务线程不被提前终止是经常使用的测试方法。

#源代码

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.testng.annotations.Test;

import java.util.Collection;
import java.util.Date;

public class SimpleTriggerRunnerTest {

@Test(enabled = true)
public void testSimpleTriggerRunnerTest(){
    // 创建一个JobDetail实例,指定SimpleJob
    JobDetail jobDetail = new JobDetail("job1_1", "jobgroup_1", SimpleJob.class);

    /*// 通过SimpleTrigger启动调度规则:立即启动,重复一百次,每次间隔2秒
    SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1_1", "tgroup1");
    simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 60000L));
    simpleTrigger.setRepeatCount(100);
    simpleTrigger.setRepeatInterval(2000);*/

    /**
     * 利用org.quartz.TriggerUtils工具类创建Trigger实例
     */
    SimpleTrigger simpleTrigger = (SimpleTrigger) TriggerUtils.makeImmediateTrigger(100, 2000);
    simpleTrigger.setName("trigger1_1");
    simpleTrigger.setGroup("jobgroup_1");

    // 通过SchedulerFactory获取一个调度实例
    SchedulerFactory schedulerFactory = new StdSchedulerFactory();
    Scheduler scheduler = null;
    try {
        scheduler = schedulerFactory.getScheduler();

        // 注册进行调度,启动调度
        scheduler.scheduleJob(jobDetail, simpleTrigger);
        scheduler.start();
        // 让主线程睡眠60秒
        Thread.currentThread().sleep(60000);
    } catch (SchedulerException e) {
        e.printStackTrace();
    }catch (InterruptedException e) {
        e.printStackTrace();
    }

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值