定时器

定时器

定时器

常见的定时器分两大块:

1、Timer 在java.util包中提供的定时器

2、quartz 第三方提供的

定时器就像日常生活中使用的闹钟,指定一个时间,按时间周期性执行

package cn.yunhe.timer;

import java.text.ParseException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerDemo {

	public static void main(String[] args) throws ParseException {
		//1、创建Timer对象用于定义定时器的任务及开始时间、周期
		Timer timer = new Timer();
		//创建匿名内部类,定义任务
		TimerTask task = new TimerTask() {
			int count = 1;
			@Override
			public void run() {
				System.out.println("定时任务执行中"+(count++));	
			}
		};
		//2、任务调度
		timer.schedule(task, 2000, 1000);
	}
	
	/**
	 * 指定开始时间及执行周期
	 */
	public static void method2() {
		//1、创建Timer对象用于定义定时器的任务及开始时间、周期
		Timer timer = new Timer();
		//创建匿名内部类,定义任务
		TimerTask task = new TimerTask() {
			int count = 1;
			@Override
			public void run() {
				System.out.println("定时任务执行中"+(count++));	
			}
		};
		//2、任务调度
		timer.schedule(task, new Date(), 1000);
	}
	
	/**
	 * 指定开始时间
	 */
	public static void method() {
		//1、创建Timer对象用于定义定时器的任务及开始时间、周期
		Timer timer = new Timer();
		//创建匿名内部类,定义任务
		TimerTask task = new TimerTask() {
			int count = 1;
			@Override
			public void run() {
				System.out.println("定时任务执行中"+(count++));	
			}
		};
		//2、任务调度
		timer.schedule(task, new Date());
	}
}

quartz

quartz的使用步骤如下:

1、创建一个SchedulerFactory对象用于生产Scheduler对象 Scheduler

2、创建调度所需要的任务 JobDetail

3、指定开始的时间和执行周期 Trigger

package cn.yunhe.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class Task implements Job{

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("定时器中的任务");
	}
}
package cn.yunhe.quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzDemo {

	public static void main(String[] args) throws SchedulerException {
		//1.创建工厂对象,用于生产Scheduler对象
		StdSchedulerFactory factory = new StdSchedulerFactory();
		//2.生产Scheduler对象
		Scheduler scheduler = factory.getScheduler();
		scheduler.start();
		//2.1创建任务(JobDetail),具体的任务需要自定义类实现Job接口
		JobDetail job = JobBuilder.newJob(Task.class).withIdentity("task1").build();
		//2.2定义开始的时间及周期
		Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1")
		.withSchedule(SimpleScheduleBuilder.simpleSchedule()
				.withIntervalInSeconds(1)
				//.withRepeatCount(3)
				.repeatForever()
				)
		.startNow()
		.build();
		//3.指定要执行的任务及时间、周期
		scheduler.scheduleJob(job, trigger);
		
	}
}

Timer和Quartz的区别

1、Timer是java.util包自带的定时器,quartz是一个第三方提供的定时器

2、Timer的任务是通过创建TimerTask子类进行实现,quartz则必须要新建一个class文件实现Job接口重写execute方法定义任务

3、Timer只能控制执行的周期及开始时间,而quartz可以灵活、准确的控制日期节点以及执行次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值