`
BatiTan
  • 浏览: 134805 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

定时任务:Java中Timer和TimerTask的使用

阅读更多
java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。

一个完整的Timer:
java.util.Timer timer = new java.util.Timer(true); 
// true 说明这个timer以daemon方式运行(优先级低, 
// 程序结束timer也自动结束),注意,javax.swing 
// 包中也有一个Timer类,如果import中用到swing包, 
// 要注意名字的冲突。 

TimerTask task = new TimerTask() { 
public void run() { 
... //每次需要执行的代码放到这里面。 
} 
}; 

//以下是几种调度task的方法: 

timer.schedule(task, time); 
// time为Date类型:在指定时间执行一次。 

timer.schedule(task, firstTime, period); 
// firstTime为Date类型,period为long 
// 从firstTime时刻开始,每隔period毫秒执行一次。 

timer.schedule(task, delay) 
// delay 为long类型:从现在起过delay毫秒执行一次 

timer.schedule(task, delay, period) 
// delay为long,period为long:从现在起过delay毫秒以后,每隔period 
// 毫秒执行一次。

  
   

下面是一个完整的例子,由两个类组成,一个定制任务,一个调用java.util.Timer

定制任务:
import java.util.Timer;

public class TimerTaskTest extends java.util.TimerTask{

@Override
public void run() {
   // TODO Auto-generated method stub
   System.out.println("start");
}
}

2.调用java.util.Timer
import java.util.Timer;

public class Test {
public static void main(String[] args){
   Timer timer = new Timer();
   timer.schedule(new TimerTaskTest(), 1000, 2000);
}
}


根据上面的介绍,便可以在1秒后,每隔2秒执行一次程序



分享到:
评论
5 楼 xunux 2016-06-21  
解释得有点问题,schedule 是 前一个任务结束时间跟后一个启动时间相隔 period 时间间隔,
而 scheduleAtFixedRate 是 任务开始时间间隔 period , 定时执行,前一个未结束不影响后一个触发执行。

/**In fixed-delay execution, each execution is scheduled relative to
     * the actual execution time of the previous execution.  If an execution
     * is delayed for any reason (such as garbage collection or other
     * background activity), subsequent executions will be delayed as well 
*/
java.util.Timer.schedule(TimerTask task, long delay, long period);

/** In fixed-rate execution, each execution is scheduled relative to the
  * scheduled execution time of the initial execution. 
*/
java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period);

4 楼 memoryisking 2015-04-02  
例子不错,但是讲解的有点简单了,推荐这篇文章讲解的更详细一点: Timer和TimeTask简介
3 楼 leonreturn 2014-11-21  
2 楼 itxiaozhu 2011-06-17  
很好,不错的例子。。谢谢。。
1 楼 azhqiang 2010-09-01  
不错,刚好用到,看了这个例子。

相关推荐

    Java中的Timer和TimerTask的使用.doc

    本文档主要讲述的是Java中的Timer和TimerTask的使用;Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类。希望本文档会给有需要...

    java定时任务Timer和TimerTask使用详解

    主要为大家详细介绍了java定时任务Timer和TimerTask使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java 中Timer和TimerTask 定时器和定时任务使用的例子

    主要介绍了Java 中Timer和TimerTask 定时器和定时任务使用的例子,非常具有实用价值,需要的朋友可以参考下

    几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】.docx

    工作中常常会有定时任务的开发需求,特别是移动端。最近笔者正好有所涉及,鉴于此,结合开发中的案例说明一下几种定时任务的 退出 。 需求说明 :定时更新正在生成的文件大小和状态【进行中、失败、完成】,如果...

    TimerTask执行每日定时任务

    利用jdk中的timer和timertask来实现,每天定时执行的任务。

    java 定时器任务timer 随tomcat启动而启动 同步启动

    我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...

    在 Java 应用程序中定时执行任务.doc

    不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。

    Android Timer Task Demo

    今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。

    Java 应用程序中定时执行任务的定时器框架

    所有类型的 Java 应用程序一般都需要计划重复执行的任务。...不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本资源中包含框架构造过程和java源代码,欢迎下载。

    Android 定时任务过程详解

    三、采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好...

    Java Timer(定时调用、实现固定时间执行)

    可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识。  其实Timer来讲是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:  Timer ...

    order_timer:订单计时器_下单结算倒计时

    order_timer这是一个下单后等待结算倒计时的计时器程序,前端使用js进行倒计时显示,后端开辟新的线程进行倒计时及定时相关操作程序原理java.util包中提供了两个非常有用类Timer 、TimerTask。Timer类用来安排任务...

    Java中Timer的用法

    现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。  用法很简单,new一个timer,然后写一个timertask的子类即可。  代码如下: package comz.autoupdatefile; import java.util.Timer; ...

    Java定时启动任务源码

    1.delay一段时间后,启动任务,任务只运行一次 2.delay一段时间后,周期运行任务 3.delay一段时间后,运行指定次任务 4.从某一特定时间开始,启动任务,任务只运行一次 5.从某一特定时间开始,周期运行任务 6....

    Java_Web定时器使用

    java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)

    java定时器

    java定时器,import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; 规定每天几点执行一次

    Java之Timer类的使用以及深入理解

    近一直在看线程知识,然后看到Timer定时器使用了线程实现的定时功能,于是了解了解;  本文 从Time类的使用和源码分析两个方面讲解:  1、Time类使用: 1 根据是否循环执行分为两类: 2 3 //只执行一次 4...

    Spring集成Quartz定时任务框架介绍.docx

    我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。 使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成...

    JAVA定时器word文档

    介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)

    java8集合源码-java:JDK8新特性

    java8集合源码定时器和定时器任务 定时器是线程调度任务以在后台线程中执行的工具。 任务可以安排为一次性执行,或定期重复执行。 与每个 Timer 对象相对应的是一个单独的后台线程,用于按顺序执行所有计时器的任务...

Global site tag (gtag.js) - Google Analytics