Timer定时器和quartz定时器

三十一.定时器

定时器跟闹钟的功能类似,可以定义一个时间来运行一段程序,比如实时的数据检测 或者是网上各种网站视频会员都是用计时器来提醒用户。

常见的定时器有 java.util包提供的Timer定时器 和 第三方提供的quzrtz定时器

Timer定时器和quartz定时器的区别

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

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

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

以下所有的task都是TimerTask的子类
所有time都是Date类型的日期
所有delay和period都是long类型的延迟时间, 单位为毫秒

​ 1.timer.schedule(task, time); 在time时间执行task任务1次

​ 2.timer.schedule(task, delay); 在延迟delay毫秒后执行task任务1次

​ 3.timer.schedule(task, firstTime, period); 在firsttime时间执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行

​ 4.timer.schedule(task, delay, period); 在延迟delay后执行task1次,之后定期period毫秒时间执行task, 时间如果为过去时间, 不会执行过去没有执行的任务, 但是会马上执行

1.Timer定时器演示:

​ 4.1 创建Timer对象用于定义定时器的任务及开始时间、周期

​ 4.2任务调度

需求:指定开始时间(开始时间为当前时间)

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());
	}

需求:指定开始时间及执行周期(毫秒值,每秒执行一次)

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);
	}

需求:延期执行 及执行周期(延迟4秒后执行,每秒执行一次)

public static void method3() {
		// 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, 4000, 1000);
	}

2.quartz定时器

quartz使用步骤:

需要的jar下载地址:quartz

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

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

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

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().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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值