JAVA中 定时器的认识(通过继承TimerTask的方式实现)

使用定时器编程,在实时显示当前时间,每1秒时钟内容更新一次。

其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现


思路

本人的思路是这样的。
创建一个Timer对象,然后通过创建一个MyTask去继承父类TimerTask
里面涉及了不同种的类型我接下来会进行讲解


程序

import java.util.Date;
import java.text.SimpleDateFormat;//SimpleDateFormat是调整输出时间的格式
import java.util.Timer;
import java.util.TimerTask;
public class Time1 {//主函数
    public static void main(String args[]){
        Timer t=new Timer();//建立time对象
        MyTask task=new MyTask();//定义任务
        t.schedule(task, 1000,1000);//设置任务的执行,1秒后开始,每2秒执行一次
    }
}
class MyTask extends TimerTask{//创建一个MyTask类继承于父类TimerTask
     public void run(){//run方法,里面包含需要执行的任务
         SimpleDateFormat asd = null;//初始化当前的时间
         asd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");//这里是SimpleDateFormat类的设置格式
         System.out.println("当前时间:" + asd.format(new Date()));//原本是将设置一个变量容器将当前时间装入,但是现在可以直接输出
     }
}

结果

这里写图片描述


借鉴大神的讲解和自己的理解


讲解

import java.util.Date;
import java.text.SimpleDateFormat;//SimpleDateFormat是调整输出时间的格式
import java.util.Timer;
import java.util.TimerTask;
public class Time1 {//主函数
    public static void main(String args[]){
        Timer t=new Timer();//建立time对象
        MyTask task=new MyTask();//定义任务
        t.schedule(task, 1000,1000);//设置任务的执行,1秒后开始,每2秒执行一次
    }
}

首先,我们需要输入的包.
对于SimpleDateFormat类,我想说一下。
具体链接
SimpleDateFormat日期-时间格式模式参数:
字母 日期或时间元素 表示 示例

G Era 标志符 Text AD

y 年 Year 1996; 96

M 年中的月份 Month July; Jul; 07

w 年中的周数 Number 27

W 月份中的周数 Number 2

D 年中的天数 Number 189

d 月份中的天数 Number 10

F 月份中的星期 Number 2

E 星期中的天数 Text Tuesday; Tue (我在部署的时候在本机oracle是返回星期是星期二,而在Oracle的服务器上是返回Tue.)

a Am/pm 标记 Text PM

H 一天中的小时数(0-23) Number 0

k 一天中的小时数(1-24) Number 24

K am/pm 中的小时数(0-11) Number 0

h am/pm 中的小时数(1-12) Number 12

m 小时中的分钟数 Number 30

s 分钟中的秒数 Number 55

S 毫秒数 Number 978

z 时区 General time zone Pacific Standard Time; PST; GMT-08:00

Z 时区 RFC 822 time zone -0800

对于schedule的4种用法,在这里我也想讲一下
1.schedule(task, time)

task(TimerTask):要执行的任务

time(Date):执行的时间(什么时候去执行),只执行一次,如果time早于现在的时间,就会立即执行。

2.schedule(task, delay)

task(TimerTask):要执行的任务

delay(Long):多久后去执行,只执行一次。比如如果delay的值为2000,task就会在距离当前时间2秒后去执行。

3.schedule(task, time, period)

task(TimerTask):要执行的任务

time(Date):第一次执行任务的时间

period(Long):每隔多久执行一次。比如period的值为2000,task就会在第一次执行之后,每隔2秒执行一次任务。

4.schedule(task, delay, period)

task(TimerTask):要执行的任务

delay(Long):多久后去执行

period(Long):每隔多久执行一次
参考

class MyTask extends TimerTask{//创建一个MyTask类继承于父类TimerTask
     public void run(){//run方法,里面包含需要执行的任务
         SimpleDateFormat asd = null;//初始化当前的时间
         asd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");//这里是SimpleDateFormat类的设置格式
         System.out.println("当前时间:" + asd.format(new Date()));//原本是将设置一个变量容器将当前时间装入,但是现在可以直接输出
     }
}

JAVA定时器的设计可以有多种样子,本人才疏学浅,只是学会了其中的一种方法。
就是通过继承TimerTask的方式实现 ,但我们必须重写run方法。
首先创建MyTask 类,并让他继承TimerTask 父类 (这里必须要继承)
后重写run 方法。规定输出时间的格式。

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/82528056
今日推荐