定时调度 Timer/TimerTask与Quartz

我们为什么需要定时调度?

  程序定时自动执行任务,这个功能听起来就非常棒。而且在实际场景中,经常会出现需要凌晨、或者每过五分钟就执行的任务,如果需要人一直守着来触发,得多么痛苦呀。

  这时候,使用定时调度任务来完成,放心可靠又轻松。

Timer/TimerTask

  使用Java提供的Timer类与TimerTask抽象类,可以实现任务的定时调度。

  需要执行的任务类继承TimerTask抽象类,并重写run()方法,将任务需要进行的代码操作放在run()方法中。

  通过实例化Timer对象,调用对象的schedule方法,安排定时调度的时间和次数等参数。Timer的常用构造器如下:
在这里插入图片描述
  Timer对象的常用方法如下:

方法 说明
cancel() 终止此计时器,丢弃任何当前计划的任务。
purge() 从该计时器的任务队列中删除所有取消的任务。
schedule(TimerTask task, long delay) 在指定的延迟之后安排指定的任务执行。
schedule(TimerTask task, Date time) 在指定的时间安排指定的任务执行。
schedule(TimerTask task, Date firstTime, long period) 从指定的第一次执行时间开始 ,对指定的任务执行重复的 固定延迟执行 。
schedule(TimerTask task, long delay, long period) 在指定 的延迟之后开始 ,重新执行 固定延迟执行的指定任务。
scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 从指定的时间 开始 ,对指定的任务执行重复的 固定速率执行 。
scheduleAtFixedRate(TimerTask task, long delay, long period) 在指定的延迟之后 开始 ,重新执行 固定速率的指定任务。

  其中,固定延迟和固定速率的区别是:

  • 固定延迟:上一次任务执行完毕后,下一次执行时间间隔是固定的。如果上一次执行时间较长,也会一直等着上一次执行结束,并且后续执行也将被延迟。
  • 固定速率:相对于初始执行的预定执行时间调度每个执行。 如果上一个由于任何原因延迟执行,则后面的执行会两次或多次执行快速连续发生以“追赶”。,来补上缺失的执行次数。

  使用实例:

public class Test {
   

	public static void main(String[] args) {
   
		Timer timer = new Timer("Timer1");
		// 执行安排
		// timer.schedule(new Job1(), 1000); //1000毫秒后,执行任务一次
		//timer.schedule(new Job1(), 1000,1000*60); //1000毫秒后,每分钟执行一次

		String date_str = "2020-04-01 18:32:00";
		Date date = null;
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		simpleDateFormat.format(new Date());
		try {
   
			date = simpleDateFormat.parse(date_str);
		} catch (ParseException e) {
   
			e.printStackTrace();
		}

		//timer.schedule(new Job1(), date, 1000*5); // 指定时间,每5秒执行一次。如果当前时间已经超过指定时间,则会立马执行一次
		timer.scheduleAtFixedRate(new Job1(),date, 1000*5);
	}
}</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值