首先导入需要的两个jar:

spring-context-support-4.1.1.RELEASE.jar

quartz-2.2.1.jar

1.创建两个类:

2.

QuartzConfiguration:

package com.baibeiyun.yunbang.common.webservice;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean; @Configuration
public class QuartzConfiguration { @SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(getClass()); @Bean
public SchedulerFactoryBean schedulerFactory() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setTriggers(cronTriggerFactoryBean().getObject());
schedulerFactoryBean.setTaskExecutor(threadPoolTaskExecutor());
schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext");
return schedulerFactoryBean;
}
@Bean
public CronTriggerFactoryBean cronTriggerFactoryBean() {
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
cronTriggerFactoryBean.setJobDetail(jobDetailFactoryBean().getObject());
cronTriggerFactoryBean.setCronExpression("0 0/1 * * * ?");
//cronTriggerFactoryBean.setCronExpression("0/5 * * * * ?");
return cronTriggerFactoryBean;
}
@Bean
public JobDetailFactoryBean jobDetailFactoryBean() {
JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
jobDetailFactoryBean.setJobClass(WorkorderCheckJob.class);
jobDetailFactoryBean.setDurability(true);
return jobDetailFactoryBean;
}
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(10);
threadPoolTaskExecutor.setMaxPoolSize(20);
threadPoolTaskExecutor.setQueueCapacity(5);
threadPoolTaskExecutor.setKeepAliveSeconds(100);
return threadPoolTaskExecutor;
} }

3.WorkorderCheckJob:

package com.textile.quartz;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; /**
* Created by Administrator on 2016/12/4.
*/
@Service
@Transactional
public class WorkorderCheckJob extends QuartzJobBean{
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(getClass()); private static boolean isRun = false; protected void executeInternal(JobExecutionContext executionContext) throws JobExecutionException {
if (isRun) {
System.out.println("前一次未执行完,跳过本次任务!");
return;
}
isRun = true;
task(executionContext);
isRun = false;
System.out.println("执行逻辑-isRunFinish"); } private void task(JobExecutionContext executionContext) {
try {
ApplicationContext applicationContext = (ApplicationContext) executionContext.getScheduler().getContext().get("applicationContext"); //AppInstanceService appInstanceService = (AppInstanceService)applicationContext.getBean(AppInstanceService.class);
//appInstanceService.clearInstanceTime(); } catch (BeansException e) {
e.printStackTrace(); } catch (SchedulerException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

4.定时的任务在第三步的类中的executeInternal执行,定时的配置信息在以上的第二步的类中。

最新文章

  1. JSP EL表达式(转)
  2. C# 科学计数法转换成数字
  3. 南邮oj[1401] 乘车费用
  4. Unity Sprite切割导出
  5. 【JavaScript】ReactJS&NodeJS了解资料
  6. 在Dll中使用 TFDQuery 的 LoadFromStream 方法注意问题
  7. 在使用Myeclipse时,用Tomcat添加部署项目的时候报错,或启动tomcat报错
  8. Android任务和返回栈完全解析
  9. [windows驱动]windows8.1驱动调试前戏
  10. WEBUS2.0 In Action - [源代码] - C#代码搜索器
  11. Linux Mono OpenShift Cloud9 rhc
  12. 关于select元素的一些基本知识
  13. Javascript知识——事件
  14. JavaScript 和 TypeScript 中的 class
  15. zookeeper快速入门
  16. pig的一些实例(我常用的语法)
  17. python两个列表合并为字典,一个作为key,一个作为value
  18. mysql系列十、mysql索引结构的实现B+树/B-树原理
  19. 【转载】WebApi 接口测试工具:WebApiTestClient
  20. ThreadPoolExecutor 杂记

热门文章

  1. git使用(一)----git安装
  2. 【Android】17.4 Activity与IntentService的绑定
  3. BestCoder Round #4 Miaomiao's Geometry (暴力)
  4. 解决Java连接MySQL存储过程返回参数值为乱码问题
  5. angular学习笔记(七)-迭代3
  6. singer页面点击歌手singer是跳转到singer-detail的设置
  7. 安装grub到U盘
  8. 关于SVN提交时报out-of-date错误的解决方法
  9. mysql utf8mb4 所引起的问题
  10. SQL server 2005如何设置一个或几个字段唯一约束?