标签: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 定时器
原文地址:http://blog.csdn.net/yongh701/article/details/44000861