转载:http://2711082222.blog.163.com/blog/static/1063022492012222291064/
经常我们都会有这样的需求,要固定的每隔一段时间执行某一个任务。比如我们做一个缓存来减少与数据库的交互,而为了使缓存与数据库中的数据尽量达到同步,需要每个固定的一段时间去数据库中的数据是否有更新以达到与缓存的同步。这样的需求可以做一个线程,线程中做一个死循环,循环中就是要执行的这个任务,每执行完一次让线程睡眠一段时间,这要就可以达到这个需求。但是用最简单最便捷的方式是使用Java为我们提供的计时器的工具类,即Timer和TimerTask。
Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中有一个抽象方法run(),类型线程中的run()方法。我们使用Timer创建一个他的对象,然后使用这对象的schedule方法来完成这种间隔的操作。schedule方法有三个参数,其中第一个参数就是TimerTask类型的对象,我们实现TimerTask的run()方法就是要周期执行的一个任务;第二个参数有两种类型,第一种是long类型,表示多长时间后开始执行,另一种是Date类型,表示从那个时间后开始执行;而第三个参数就是执行的周期,为long类型。schedule方法还有一种两个参数的执行重载,第一个参数仍然是TimerTask,第二个表示为long的形式表示多长时间后执行一次,为Date就表示某个时间后执行一次。
需要注意的是Timer就是一个线程,使用schedule方法完成对TimerTask的调度,多个TimerTask可以共用一个Timer,也就是说Timer对象调用一次schedule方法就是创建了一个线程,并且调用一次schedule后TimerTask是无限制的循环下去的,使用Timer的cancel()停止操作。当然同一个Timer执行一次cancel()方法后,所有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
// 毫秒执行一次。
完整的示例代码:
1、定制任务:
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);
}
}
相关推荐
Java 计时器 Timer 和 TimerTask 用法总结 ...我们介绍了 Timer 和 TimerTask 的基本概念、使用方法和示例代码,并讨论了如何将 Timer 和 TimerTask 与 GUI 组件整合,以实现实时显示时间的效果。
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
### Timer和TimerTask的使用详解 #### 一、引言 `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现...
下面是一个简单的示例代码,展示了如何使用`Timer`和`TimerTask`: ```java import java.util.Timer; import java.util.TimerTask; public class TimerTaskDemo extends TimerTask { String index; Timer ...
以下是一个简单的`Timer`和`TimerTask`使用示例: ```java import java.util.Timer; import java.util.TimerTask; public class TimerDemo { public static void main(String[] args) { Timer timer = new Timer...
Java中的Timer和TimerTask简介(附完整代码实例)。 在Java中,Timer和TimerTask是两个经常用来实现定时器的类。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一...
在Java编程语言中,`Timer`和`TimerTask`是两个关键的类,它们用于创建和管理定时任务。`Timer`类提供了一种机制来安排在未来某一特定时间或以固定间隔执行任务,而`TimerTask`是这些任务的实现基础。 `Timer`类是...
它有两种主要的方法:`schedule(TimerTask task, long delay)`和`schedule(TimerTask task, Date firstTime, long period)`。前者会在指定延迟后执行任务,而后者则会在指定的日期和时间首次执行,然后每隔一段时间...
ICE_Timer 类负责创建和管理定时任务,而 TimerTask 类则是具体定时任务的抽象接口,任何需要执行的具体任务都需要继承自 TimerTask 并重写 `runTimerTask` 方法。 #### 二、ICE_Timer 类详解 ##### 2.1 构造与...
java类Timer和TimerTask的使用.doc
以下是一个`Timer`和`TimerTask`使用的示例代码: ```java import java.util.Timer; import java.util.TimerTask; public class TimerExample { public static void main(String[] args) { Timer timer = new ...
下面将详细介绍`Timer`和`TimerTask`的工作原理以及如何在实际开发中使用它们。 **1. Java Timer类** `Timer`类是线程安全的,它创建了一个后台线程,用于管理计划的任务。当你调用`Timer`的`schedule`或`...
本文将深入探讨这两个类的使用方法及其相关知识点。 首先,`Timer` 类是一个线程类,它负责调度任务的执行。它的工作原理是创建一个后台线程,这个线程会等待一段时间,然后执行由 `TimerTask` 定义的任务。`Timer`...
要使用`Timer`和`TimerTask`实现单次定时执行,可以调用`Timer`的`schedule(TimerTask task, long delay)`方法,其中`delay`参数表示延迟执行的时间(以毫秒为单位)。 示例: ```java TimerTask task = new MyTask...
然后,我们可以创建一个`Timer`实例,并使用`schedule()`方法来安排`TimerTask`的执行: ```java Timer timer = new Timer(); MyTimerTask task = new MyTimerTask(findViewById(R.id.textView)); timer.schedule...
下面将详细介绍JAVA Timer和TimerTask的概念、用法和优点。 JAVA Timer JAVA Timer是一种线程设施,用于安排以后在后台线程中执行的任务。它可以安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以...
首先,我们来看Timer和TimerTask的使用。Timer类是一个用于调度定时任务的工具,它使用单个后台线程来执行任务。TimerTask是Timer类所调度的任务的抽象类,我们需要创建其子类并重写run()方法来实现具体的业务逻辑。...
在Java Web开发中,`ServletContextListener`、`Timer`和`TimerTask`是三个非常重要的概念,它们分别涉及Web应用程序的生命周期管理、定时任务的执行和控制。下面将详细讲解这三个概念及其应用。 首先,`...
1. 创建一个`Timer`对象和一个`TimerTask`,在`TimerTask`的`run()`方法中执行需要定时执行的任务,如数据的获取或计算。 2. 当`TimerTask`的`run()`方法执行完毕后,通过`Handler`的`sendMessage()`或`post()`方法...
Timer类主要有以下几个关键方法: 1. `schedule(TimerTask task, long delay)`:延迟`delay`毫秒后执行`task`。 2. `schedule(TimerTask task, Date firstTime, long period)`:从`firstTime`指定的时间开始,每隔`...