码迷,mamicode.com
首页 > 编程语言 > 详细

【Java】利用Timer与TimerTask定时执行任务

时间:2015-03-01 10:35:50      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:java   控制台   timer   timertask   定时器   

在Java里面定时执行一条任务多用于线程与进程配合Thread.currentThread().sleep(XXX);来实现,但是一些小型的任务其实完全利用Timer与TimerTask定时执行,Timer与TimerTask组合跟Thread与Runnable的区别在于,Timer与TimerTask是纯粹的单线程定时执行任务的计时器,相当于Thread与Runnable配合Thread.currentThread().sleep(XXX);的特殊情况,但程序写法定时器没有线程那么复杂。Thread与Runnable强调一个任务多个线程去完成。下面,举个小小的例子,说明Timer与TimerTask的用法。


一、基本目标

要求Java每一秒向控制台输出当前的时间。

技术分享

当然,你改两改就可以让Java每X秒做任何事。

由于Java无法对控制台清屏,使用网上的各种方法也不甚理想,最贴近的是直接打印50个换行,但这在eclipse里面很难看。所以无法做到如同《【JavaScript】一个同步于本地时间的动态时间》(点击打开链接)计时器的效果。当然,你做成Swing界面或许能够实现。这里为了说明Timer与TimerTask就没有需要做这么复杂了。


二、制作过程

这里无须用到AWT的ActionListen这么复杂,代码如下,短短的几行就完成了。

import java.text.SimpleDateFormat;
import java.util.*;

class MyTask extends TimerTask {
	public void run() {
		//时间输出
		System.out.println(new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss E")
				.format(new Date(System.currentTimeMillis())).toString());
	}
}

public class SecondTimer {
	public static void main(String[] args) {
		Timer timer = new Timer();
		timer.schedule(new MyTask(), 0, 1000);
	}
}


schedule方法中的参数,代表要执行MyTask这个继承了TimerTask并且如同线程一样重写了run()函数的方法,而且在之后的第0秒开始,每1000毫秒执行一次MyTask类中的run()方法。

Java怎么去到当前系统的日期,我此前在《【Java】有关System.currentTimeMillis()的思考》(点击打开链接)已经说过,这里不再赘述。

【Java】利用Timer与TimerTask定时执行任务

标签:java   控制台   timer   timertask   定时器   

原文地址:http://blog.csdn.net/yongh701/article/details/44000861

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!