Spring定时器QuartzJobBean和JDK定时器Timer

项目开发基本会使用到定时器,JDK有自带的定时器Timer。Spring框架也有自己的定时器QuartzJobBean,以下是二者的使用方式:


JDK-Timer定时器:


jdk定时器使用步骤很简单:
1.创建一个定时任务类并继承TimerTask类,定时任务类用于实现实际业务需求;
2.创建定时任务timer实例;
3.调用timer实例的schedule方法,带上定时任务实例等参数;

1).定义继承了TimerTask的任务类:

import java.util.TimerTask;

public class TimerTaskBean extends TimerTask {
/**
	 * 定时任务代码块
	 */
	@Override
	public void run() { 
		//TODO 根据需求实现定时任务的代码块
		System.out.println(Thread.currentThread().getName() + " 运行结束");
	}

2).创建Timer实例并执行schedule方法:

public class TimerDemo {
	public static void main(String[] args) throws ParseException {
		//创建计时器实例
		Timer timer = new Timer("开始执行任务-------------------");
		//创建计时器任务
		TimerTask task = new TimerTaskBean();
		//调用计时器的schedule方法,此处的2000代表当前时间2000毫秒之后开始执行
		timer.schedule(task, 2000);
		System.out.println("定时任务已启动,2秒后执行");
	}
}

定时任务也有几种模式,通过schedule重载方法实现:

  • 系统启动,延迟delay秒后运行:schedule(TimerTask task,long delay)
  • 系统启动,在指定时间运行:schedule(TimerTask task,Date date)
  • 系统启动,延迟delay秒后运行,并每间隔period秒运行一次:schedule(TimerTask task, long delay, long period)
  • 系统启动,在指定时间date运行后,并每间隔period秒运行一次:schedule(TimerTask task, Date date, long period)

Spring-QuartzJobBean定时器:

学习Spring定时器之前,先来了解下面三个类预热下:
1、调度工作类:org.springframework.scheduling.quartz.JobDetailBean,该对象通过jobClass属性指定调度工作类(eg:例子中的QuartzJob 类);

2、调度触发器:org.springframework.scheduling.quartz.CronTriggerBean,该对象通过jobDetail属性指定工作类,通过cronExpression属性指定调度频率;

3、 调度工厂类:org.springframework.scheduling.quartz.SchedulerFactoryBean,该对象通过triggers属性指定单个或多个触发器。

一、业务实现工作类:

public class QuartzJob extends QuartzJobBean {
	private static int i = 0;
    //需要调度的任务
	protected void executeInternal(JobExecutionContext context)
		throws JobExecutionException {
		//TODO 根据需求实现定时任务的代码块
		System.out.println("工作类调度" + ++i + "进行中...");
}

二、配置spring文件




	
	 
		 
		 
			 
			 
			 
		 
	 
	 
	 
	 	
		
		
	 
	
	 
		 
			 
			 	
			 
		 
	 

三、启动项目,定时器就会根据设定的时间以及调度频率来执行。


———编写者:梦想的边缘


你可能感兴趣的:(spring,java基础)