赞
踩
在实现定时器之前,先了解一下实现过程中需要用到的知识。
java.util.Timer类:
它是一种工具,线程用其安排以后在后台线程中执行的任务,可安排任务执行一次,或者定期重复执行;
其构造方法:
Timer() 创建一个新计时器
Timer(boolean isDaemon) 创建的该计时器可以指定相关的线程作为守护线程运行。
我们需要用到的方法:
void schedule(TimerTask task,Date firstTime,long period)
(看参数大概也可以知道功能)安排指定任务在指定时间开始进行重复执行
- //创建一个计时器
- Timer timer = new Timer();
- //然后调用schedule(TimerTask task,Date firstTime,long period)方法就行了,对里面参数进行导入
TimerTask是一个抽象类,它实现了Runnable接口(所以也可以把它看成一个线程),我们需要对里面的run方法进行实现,也就实现计时器任务执行的操作。
看英文翻译过来的意思我们也可以猜到,它是要我们设置首次运行任务的时间,这个时间类型是Date型的,怎么设置呢?
总不能去计算毫秒然后设置吧。这里需要用到SimpleDateFormat类,设置日期格式创建一个SimpleDateFormat的对象,然后用其调用SimpleDateFormat类中的parse方法,该方法返回一个Date对象。这样就可以按自己的想法去设置firstTime参数了
(第三个参数period就是每次间隔执行任务的时间,long类型,单位是毫秒)
下面是实现代码:
- package ly.practice.thread.threadSafety;
- import java.util.Timer;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util. *;
- /*
- * 使用定时器指定指定任务
- */
- public class TimerText {
- public static void main(String[] args) throws ParseException {
-
- //创建定时对象
- Timer timer = new Timer();
- //Timer timer = new Timer(true)//守护线程的方式
-
-
- //指定定时任务
- //timer.schedule(定时任务,第一次执行时间,间隔多久执行一次)
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date firstTime = sdf.parse("2022-10-3 14:52:40");
- //timer.schedule(new LogTimerTask(),fitstTime,1000*60*24*365)一年执行一次
- timer.schedule(new LogTimerTask(), firstTime,1000*10);
- }
- }
-
- //编写一个定时任务类
- //假设这是一个记录日志的定时任务
- class LogTimerTask extends TimerTask{
- public void run() {
- //编写所需要的任务
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String strTime = sdf.format(new Date());
- System.out.println(strTime);
- }
- }
首次执行的时间firstTime可以自己设置,编写任务操作也可以按自己的思维去完成.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。