`

Java定时调度 Timer类和TimerTask类

 
阅读更多

Java定时调度 Timer类和TimerTask类 
(转):http://zengzhaoshuai.iteye.com/blog/1121105

  Timer类是一种线程设施,可以用来实现某一个时间或某一段时间后安排某一个任务执行一次或定期重复执行。该功能和TimerTask配合使用。TimerTask类用于实现由Timer安排的一次或重复执行的某个任务。每一个Timer对象对应的是一个线程,因此计时器所执行的任务应该迅速完成,否则会延迟后续的任务执行。
  Timer类方法摘要
Java代码 
void cancel()   
          终止此计时器,丢弃所有当前已安排的任务。   
int purge()   
          从此计时器的任务队列中移除所有已取消的任务。   
void schedule(TimerTask task, Date time)   
          安排在指定的时间执行指定的任务。   
void schedule(TimerTask task, Date firstTime, long period)   
          安排指定的任务在指定的时间开始进行重复的固定延迟执行。   
void schedule(TimerTask task, long delay)   
          安排在指定延迟后执行指定的任务。   
void schedule(TimerTask task, long delay, long period)   
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。   
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)   
          安排指定的任务在指定的时间开始进行重复的固定速率执行。   
void scheduleAtFixedRate(TimerTask task, long delay, long period)   
          安排指定的任务在指定的延迟后开始进行重复的固定速率执行。  

void cancel()
          终止此计时器,丢弃所有当前已安排的任务。
int purge()
          从此计时器的任务队列中移除所有已取消的任务。
void schedule(TimerTask task, Date time)
          安排在指定的时间执行指定的任务。
void schedule(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void schedule(TimerTask task, long delay)
          安排在指定延迟后执行指定的任务。
void schedule(TimerTask task, long delay, long period)
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定速率执行。
void scheduleAtFixedRate(TimerTask task, long delay, long period)
          安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

TimerTask类方法摘要
Java代码 
boolean cancel()   
          取消此计时器任务。   
abstract  void run()   
          此计时器任务要执行的操作。   
long scheduledExecutionTime()   
          返回此任务最近实际 执行的已安排 执行时间。  

boolean cancel()
          取消此计时器任务。
abstract  void run()
          此计时器任务要执行的操作。
long scheduledExecutionTime()
          返回此任务最近实际 执行的已安排 执行时间。


TimerTask类是个抽象类,如果要用该类,需要自己建立一个类来继承此类,并实现其中的抽象方法。
Java代码 
package zzs.time.demo;  
 
import java.text.SimpleDateFormat;  
import java.util.Date;  
import java.util.TimerTask;  
 
public class MyTask extends TimerTask {  
 
    @Override 
    public void run() {  
        // TODO Auto-generated method stub  
        SimpleDateFormat simpleDateFormat=null;  
        simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");  
        System.out.println("当前的系统时间为:"+simpleDateFormat.format(new Date()));  
 
    }  
 


package zzs.time.demo;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class MyTask extends TimerTask {

@Override
public void run() {
// TODO Auto-generated method stub
SimpleDateFormat simpleDateFormat=null;
simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
System.out.println("当前的系统时间为:"+simpleDateFormat.format(new Date()));

}

}

Java代码 
package zzs.time.demo;  
 
import java.util.Timer;  
 
public class TestTask {  
 
    /** 
     * @param args 
     * @throws InterruptedException  
     */ 
    public static void main(String[] args) throws InterruptedException {  
        // TODO Auto-generated method stub  
        Timer  timer=new Timer();  
        MyTask myTask=new MyTask();  
        timer.schedule(myTask, 1000, 2000);  
               // Thread.sleep(5000);  
        //timer.cancel();  
 
    }  


package zzs.time.demo;

import java.util.Timer;

public class TestTask {

/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
Timer  timer=new Timer();
MyTask myTask=new MyTask();
timer.schedule(myTask, 1000, 2000);
               // Thread.sleep(5000);
//timer.cancel();

}
}



运行结果:
Java代码 
当前的系统时间为:2011-07-10 15:37:44:831 
当前的系统时间为:2011-07-10 15:37:46:786 
当前的系统时间为:2011-07-10 15:37:48:786 
当前的系统时间为:2011-07-10 15:37:50:786 
当前的系统时间为:2011-07-10 15:37:52:786 

 

分享到:
评论

相关推荐

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

    调度可以用 Timer 【调用 schedule() 或者 scheduleAtFixedRate() 方法实现】或者 ScheduledExecutorService 【结合工作中其它的需求,笔者选用此】 ScheduledExecutorService的初始化(线程池):

    Java实现定时调度的三种方法 - CSDN博客1

    (1)Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感的 (2)所有的TimerTask只有一个线程TimerThread

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

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

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

     其实Timer来讲是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:  Timer timer = new Timer();  timer.schedule(new TimerTask() {  public ...

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

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

    java使用TimerTask定时器获取指定网络数据

    java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建,下面的就用示例来学习...

    Spring定时器

    让应用程序定时执行某个任务. 从Java 1.3开始,Java SDK就通过java.util.Timer类提供了基本的调度功能。这个类允许你调度一个任务(通过java.util.TimerTask子类定义)按任意周期运行。

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

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

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

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

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

    23-Listener-源代码.rar

    案例-使用监听器完成定时生日祝福、,一、监听器Listener 二、邮箱服务器。 1.什么是监听器? 2.监听器有哪些? 3.监听三大域对象的创建与销毁的监听器 ...c、任务调度----定时器----Timer/TimerTask

Global site tag (gtag.js) - Google Analytics