Quartz实现简单的定时任务.

项目中有这么个需求,每天晚上24点定时执行清除数据库中某张临时表的记录,刚开始采用定时器来做,但感觉有问题。后台晚上查询发现Quartz不错,就改用了Quartz来实现,以下是一点心得和实现代码,故分享给大家。

1、web.xml配置

<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>
org.quartz.ee.servlet.QuartzInitializerServlet
</servlet-class>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<listener>
<listener-class>
QuartzServiceLoader
</listener-class>
</listener>


2、监听器

public class QuartzServiceLoader implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
try {
// 监听器关闭时关闭Sheduler
TestShedule.stop();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}

}

public void contextInitialized(ServletContextEvent arg0) {
try {
// 监听器启动时启动Sheduler
TestShedule.run();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}

}



3、调度实现

public class TestShedule implements Job {
static SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();

static Scheduler sched;

@SuppressWarnings("static-access")
public static void run() throws Exception {
// 获取调度管理器
sched = schedFact.getScheduler();
// 创建工作
JobDetail jobDetail = new JobDetail("myJob", sched.DEFAULT_GROUP,
TestShedule.class);
// 创建触发器
CronTrigger trigger = new CronTrigger("myTrigger", "test",
"0/10 * * * * ?"); // 每天晚上24点
// 添加到调度管理器中
sched.scheduleJob(jobDetail, trigger);
// 启动调度管理器
sched.start();
}

public static void stop() throws Exception {
sched.shutdown();
}

public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Hello,world!");
}
}


还有一些关于时间和执行的配置就不发了,网上搜索下很多的。这里只是自己的一个需求,只能起到一个抛砖引玉的作用吧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值