使用定时器编程,在实时显示当前时间,每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 方法。规定输出时间的格式。