`
namezhou
  • 浏览: 158660 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java创建计划任务/定时任务:Timer和TimerTask类详解

阅读更多

Timer是Jdk提供的一个定时器组件,不同于Swing中的Timer,他位于Java.util包中

 

Timer用后台的一个线程 定时或者重复的执行封装好的任务 任务被封装成TimerTask

 

TimerTask 是一个实现 Runable 接口的抽象类,把你需要执行的任务继承TimerTask即可

 

实例代码1. 使用Timer和TimerTask定时执行指定的任务

 

package jdk.timer.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
 * 一个简单的计划任务的例子
 * @author Ericzhou
 *
 */
public class TestTimer {
	public static void main(String[] args) {
		System.out.println(new Date());
		at(5);
	}
	public static void at(int timeout){
		final Timer t = new Timer();
		t.schedule(new TimerTask(){
			@Override
			public void run() {
				System.out.println("time up..."+ new Date());
				t.cancel(); //Run方法执行完成之后程序依然不会退出,可以采用cancel方法或者system.exit结束程序
			}
		}, new Date(new Date().getTime()+timeout*1000));
	}
}

 

schedule() 方法用于指定timer在何时运行何种任务,他有很多重载的参数形式

 

可以使用delay或者精确的Date   与实现线程类似,TimerTask的实现类同样要实现run方法

 

我在这里使用了内部类

 

需要注意的是,任务执行完成后,线程并不会退出,可以有以下几种方法退出线程:

 

1.调用Timer的cancel() 方法

2.使用system.exit()方法

3.使timer指向新的引用

 

实例2.使用Timer重复执行指定任务

package jdk.timer.test;
import java.util.Timer;
import java.util.TimerTask;
/**
 * @author Ericzhou
 */
public class TestRecycleTask {

	public static void main(String[] args) {
		Timer t = new Timer();
		TimerTask task = new TimerTask(){
			@Override
			public void run() {
				System.out.println("I am running...");
			}
		};
		t.schedule(task,0,3*1000);
	}
}

 与实例一的区别就在于使用了另外一个schedule方法

public void schedule(TimerTask task,
                     long delay,
                     long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。

在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。从长期来看,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。

固定延迟执行适用于那些需要“平稳”运行的重复活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。

 

参数:
task - 所要安排的任务。
delay - 执行任务前的延迟时间,单位是毫秒。
period - 执行各后续任务之间的时间间隔,单位是毫秒。
抛出:
IllegalArgumentException - 如果 delay 是负数,或者 delay + System.currentTimeMillis() 是负数。
IllegalStateException - 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。

   Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。

        一个Timer可以调度任意多个TimerTask,它会将TimerTask存储在一个队列中,顺序调度,如果想两个TimerTask并发执行,则需要创建两个Timer。

0
1
分享到:
评论

相关推荐

    Timer和TimerTask的使用

    `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现定时提醒、定时备份等功能非常有用。 #### 二、...

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

    总结起来,`Timer` 和 `TimerTask` 提供了一种简单的方式在Java中实现定时任务,无论是单次执行还是周期性执行,都能方便地进行调度。但需要注意的是,由于 `Timer` 是基于单线程模型的,如果一个 `TimerTask` 执行...

    详解JAVA Timer和TimerTask

    "详解JAVA Timer和TimerTask" JAVA Timer和TimerTask是JAVA语言中两种重要的线程设施,用于实现定时执行任务。下面将详细介绍JAVA Timer和TimerTask的概念、用法和优点。 JAVA Timer JAVA Timer是一种线程设施,...

    java写定时任务,定时任务、定时器详细示例

    本文将深入探讨如何使用Java标准库中的`java.util.Timer`和`java.util.TimerTask`来实现定时任务。 ### 原理详解 在Java中,`java.util.Timer`类提供了调度定时任务的功能,而`java.util.TimerTask`则是执行这些...

    Timer与TimerTask(计时器)

    在Java编程语言中,`Timer`和`TimerTask`是用于执行定时任务的重要类。这两个类通常被用来处理那些需要在指定时间或周期性执行的任务,比如定时清理缓存、定时更新数据库等场景。 #### Timer简介 `Timer`类是一个...

    java定时器(timer类使用详解)

    在本文中,我们将深入探讨`Timer`类的工作原理、常用方法以及如何使用它来创建和管理定时任务。 `Timer`类主要用于计划在将来某个时间点执行的任务,这通常通过`TimerTask`类来实现,`TimerTask`是实现了`Runnable`...

    Java软件开发实战 Java基础与案例开发详解 12-6 用Timer类调度任务 共6页.pdf

    `Timer`类与`TimerTask`类的结合使用为Java开发人员提供了一种简单而强大的方式来管理各种定时任务。通过灵活地使用这两个类,开发者可以根据实际需求定制各种复杂的定时任务逻辑。 总结来说,`java.util.Timer`类...

    Timer定时任务

    Java中的`java.util.Timer`类和`java.util.TimerTask`类为我们提供了实现定时任务的能力。这篇文档将深入探讨`Timer`定时任务的相关知识点,并结合实际应用进行解析。 首先,`Timer`类是一个线程类,用于调度任务在...

    java线程定时启动

    Java标准库提供了几种不同的方式来实现定时任务的功能,其中最常用的是`java.util.Timer`类与`java.util.TimerTask`类的组合使用。 #### 二、核心概念 1. **Timer类**:它是Java中的定时器类,用于安排和管理定时...

    JAVA定时运行

    `Timer`类本身不是线程安全的,因此通常建议为每个任务创建一个独立的`Timer`实例。 #### 三、关键概念与方法 1. **`Timer`对象的创建**:通过无参构造函数创建`Timer`对象。 ```java Timer timer = new Timer...

    Java定时器Timer简述共8页.pdf.zip

    - Java Timer类是位于java.util包下的,它提供了创建和管理定时任务的能力。通过创建一个Timer对象,我们可以安排一系列的任务在未来某个时刻执行。 - Timer类主要提供了两个方法:`schedule(TimerTask task, long...

    java-timer的应用

    通过扩展Java的Timer和TimerTask,开发者可以创建一个更强大的计划框架,以应对复杂的定时任务需求。这个框架可能包括自定义的Scheduler类,它可以使用日历算法计算任务的下一次执行时间,确保在各种时间调整条件下...

    java 定时执行

    ### Java定时执行任务详解 #### 一、Java定时任务实现方式概述 在Java中实现定时任务的方法有很多,这里主要介绍一种常见的实现方式:利用`java.util.Timer`类来完成定时任务的调度。`Timer`类提供了多种方法来...

    Java 定时器(Timer,TimerTask)详解及实例代码

    总结来说,Java的`Timer`和`TimerTask`提供了灵活的定时执行任务的能力,适用于需要在特定时间或周期性执行某些操作的场景。使用时需根据需求选择合适的调度方法,并确保任务类正确实现`TimerTask`接口。在实际应用...

    Java中Timer的用法详解

    在Java中,`Timer` 类是Java.util包的一部分,它提供了一种方便的方式来按计划执行任务,这些任务通常称为`TimerTask`。`Timer` 类主要用于创建一个后台线程,该线程负责调度和执行由`TimerTask`对象定义的任务。`...

    Spring定时任务的几种实现

    1. **Java自带的`java.util.Timer`类**:这种实现方式允许用户调度一个`java.util.TimerTask`任务,并使程序能够按某一频度执行。然而,这种方式不支持在指定时间点执行任务的功能,因此在实际应用中并不常用,本文...

    定时任务,JSP

    - Java中的`java.util.Timer`和`TimerTask`类,用于创建定时任务。 - Quartz库,一个强大且灵活的开源作业调度框架,支持复杂的时间调度。 - Spring框架的`@Scheduled`注解,方便地在Spring Bean中定义定时任务。...

    Java任务调度.pdf

    自Java 1.3版本起,Java标准库中引入了`java.util.Timer`和`java.util.TimerTask`两个类,为开发者提供了一套简单有效的时间任务调度方案。这一机制在Java 5.0中得到了进一步的完善和增强。 ##### TimerTask 类解析...

    Java中Timer的schedule()方法参数详解

    Java中Timer的schedule()方法参数详解 Java中Timer的schedule()方法是Java...Java中Timer的schedule()方法是实现定时任务的重要机制,需要正确地理解和使用schedule()方法的参数和执行结果,以便实现正确的定时任务。

Global site tag (gtag.js) - Google Analytics