Java定时任务调度之Timer

本文介绍了Java中使用Timer进行定时任务调度的方法,包括schedule()和scheduleAtFixedRate()的四种用法,以及它们之间的区别。同时,通过灌水机器人和跳舞机器人的例子展示了如何创建TimerTask和Timer。最后,指出了Timer在管理并发任务和处理异常时的局限性,建议在需要更复杂任务调度或高时效性需求时使用Quartz。
摘要由CSDN通过智能技术生成
定时任务定义

    定时任务调度:基于给定的时间点、给定的时间间隔或者给定的执行次数自动执行的任务。

JDK定时任务Timer

1.JDK定时任务工具类Timer

    Timer:有且仅有一个后台线程对多个业务线程进行定时、定频率的调度;Timer定时任务(schedule)的四种用法:后台线程Timer——业务线程TimerTask

  • schedule(task,time)——在时间等于或者超过time的时候执行且仅执行一次task;(schedule1代码)
  • schedule(task,time,period)——时间等于或者超过timer时首次执行task,之后每隔period毫秒重复执行一次task;(schedule2代码)
  • schedule(task,delay)——等待delay毫秒后执行且仅执行一次task;(schedule3代码)
  • schedule(task,delay,period)——等待delay毫秒后首次执行task,之后每隔period毫秒重复执行一次task;(schedule4代码)
  • scheduleAtFixedRate(task,time,period)——时间等于或者超过time时首次执行task,之后每隔period毫秒重复执行一次task;(atFixedRate1代码)
  • scheduleAtFixedRate(task,delay,period)——等待delay毫秒后首次执行task,之后每隔period毫秒重复执行一次task;(atFixedRate2代码)

2.创建TimerTask业务线程实现类JdkTimerTask:

package com.luna.timer.jdk;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimerTask;
public class JdkTimerTask extends TimerTask{
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
	public JdkTimerTask() {
	}
	@Override
	public void run() {
		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println("Current exec time is:"+sf.format(calendar.getTime()));
		System.out.println("Current exec name is:"+name);
	}

}

3.创建后台线程Timer类的实现JDKTimer:

package com.luna.timer.jdk;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
public class JdkTimer {
	public static void main(String[] args) {
		Timer timer = new Timer();
		JdkTimerTask timerTask = new JdkTimerTask();
		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println("Current exec time is:"+sf.format(calendar.getTime()));
		//获取当前时间3秒之后的时间,各个任务独立运行避免相互影响
		calendar.add(Calendar.SECOND, 3);
		
//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抽离的心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值