如果您想要在某個時間點之後,執行某項排定的任務,您可以定義一個TimerTask,再將之排定給Timer,Timer會依指定的時間來執行TimerTask。
舉個實例來說,您想在程式啟動後5秒鐘執行報時,則您可以繼承TimerTask,並重新定義其run()方法。
DateTask.java
pakage onlyfun.caterpillar;
import java.util.*;
public class DateTask extends TimerTask {
public void run() {
System.out.println("任務時間:" + new Date());
}
}
在run()方法中,只簡單的顯示run()方法被執行的時間,TimerTask的排程執行要交給Timer物件,例如:
Main.java
package onlyfun.caterpillar;
import java.util.*;
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new DateTask(), 5000);
System.out.println("現在時間:" + new Date());
try {
Thread.sleep(8000);
}
catch(InterruptedException e) {
}
timer.cancel();
}
}
Timer物件的schedule()方法接受TimerTask實例,並可以給它一個毫秒數,表示schedule()方法執行後,幾毫秒之後執行 TimerTask中的run()方法,Timer物件在啟動排程後,如果要停止,則要執行cancel()方法,這個程式的執行結果如下:
現在時間:Fri Jan 19 10:47:10 CST 2007
任務時間:Fri Jan 19 10:47:15 CST 2007
除了指定幾毫秒之後執行任務之外,您還可以要求Timer物件,每隔多少時間就執行一次TimerTask的run()方法,例如一秒後開始執行TimerTask,而後每隔3秒執行一次:
Main.java
package onlyfun.caterpillar;
import java.util.*;
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new DateTask(), 1000, 3000);
System.out.println("現在時間:" + new Date());
try {
Thread.sleep(20000);
}
catch(InterruptedException e) {
}
timer.cancel();
}
}
執行結果如下:
現在時間:Fri Jan 19 10:49:43 CST 2007
任務時間:Fri Jan 19 10:49:44 CST 2007
任務時間:Fri Jan 19 10:49:47 CST 2007
任務時間:Fri Jan 19 10:49:50 CST 2007
任務時間:Fri Jan 19 10:49:53 CST 2007
任務時間:Fri Jan 19 10:49:56 CST 2007
任務時間:Fri Jan 19 10:49:59 CST 2007
任務時間:Fri Jan 19 10:50:02 CST 2007
Timer的schedule()方法也可以接受Date實例,例如您想直接排定執行日為一個月之後,則可以透過Calendar來計算,再取得Date時間:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);
System.out.println("任務排定時間:" + c.getTime());
Timer timer = new Timer();
timer.schedule(new DateTask(), c.getTime(), 3000);
Timer與TimerTask是獨立的兩個物件,當使用Timer的schedule()方法排定TimerTask之後,則必須等執行Timer的 cancel()執行之後,讓TimerTask與Timer脫離關係,TimerTask才可以重新加入其它Timer的排程。
我之前用timer.schedule()方法,程序只运行很短的一瞬间就停了,现在才知道是没有让线程睡觉。文中Thread.sleep(8000)的部分!
分享到:
相关推荐
总结来说,`Timer` 类的 `schedule` 和 `scheduleAtFixedRate` 方法是Java中进行定时任务调度的关键工具。`schedule` 适合单次延迟执行,而 `scheduleAtFixedRate` 则用于保证任务以固定频率周期性执行。了解并熟练...
Java.util.Timer类是Java标准库提供的一种简单但功能有限的定时任务执行机制。它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和...
总结一下,`Java Timer` 和 `TimerTask` 提供了一种简单的方式来计划和执行周期性的任务。`Timer` 负责调度,而 `TimerTask` 是执行任务的载体。通过合理的使用,开发者可以构建出复杂的定时任务逻辑,适用于各种...
在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`,以及更强大的第三方库如Quartz Scheduler和Spring框架中的`@Scheduled`注解等...
Timer类提供了计划任务的方法,如`schedule(TimerTask task, long delay)`和`schedule(TimerTask task, Date firstTime, long period)`。这些方法可以用来安排一个`TimerTask`实例在未来某一时刻或以一定间隔重复...
Java定时器Timer是Java编程语言中用于计划执行任务的一种工具类。Timer类主要提供了定时任务的安排执行,对于需要在指定时间后、或者以固定周期重复执行任务的场景非常有用。本文档中介绍的Timer类的实现以及如何...
`Timer`类提供了计划任务的方法,使得任务能够在未来的某一时刻或者按照特定的周期执行。`Timer`类结合`TimerTask`类一起使用,可以实现强大的定时任务调度功能。 `TimerTask`是`Timer`的子任务,它继承自`Runnable...
在Java ME(Micro Edition)平台中,`Timer`类是一个重要的工具,用于执行定期的、重复的任务。在游戏开发和需要定时事务处理的场景中,`Timer`的使用显得尤为重要。`sample-Timer.rar`提供的示例代码展示了如何在...
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...
这个`定时器Timer实例.rar`压缩包可能包含了演示如何使用这两个类的示例代码。下面将详细介绍`Timer`和`TimerTask`,以及如何在实际应用中使用它们。 1. **Timer类**: `java.util.Timer`是一个调度类,它允许我们...
为了使用`Timer`,我们首先需要创建一个`Timer`实例,并通过该实例的`schedule()`方法来安排任务的执行。 #### 二、定时器任务(TimerTask)简介 `TimerTask`是一个抽象类,继承自`Runnable`,并且需要用户重写其`...
`contextInitialized`方法在Web应用启动时调用,创建了一个`Timer`实例并安排了任务的执行。`contextDestroyed`方法在Web应用关闭时调用,取消所有定时任务以避免内存泄漏。 接下来,在`web.xml`文件中配置这个监听...
因此,确保在不再需要定时器时调用`timer.cancel()`来取消所有计划的任务,并避免内存泄漏。 尽管`Timer`类在某些场景下方便使用,但它有一些限制,例如它并不适合执行实时性要求高的任务,因为它不是基于实时调度...
`Timer`类主要用于计划在将来某个时间点执行的任务,这通常通过`TimerTask`类来实现,`TimerTask`是实现了`Runnable`接口的轻量级任务类。下面我们将详细讲解这两个类的主要特性和使用方式。 1. **创建Timer对象** ...
标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...
`java.util.Timer` 是Java标准库中的一个工具类,用于创建和管理定时任务。它提供了一种简单的方式来安排任务在未来某个时间点或周期性地执行。以下是一些主要方法: 1. `Timer.schedule(TimerTask task, Date time...
### Java里timer执行定时任务 #### 一、延时执行 在Java中,`java.util.Timer` 类提供了创建和管理定时任务的功能。如果需要在特定时间之后执行某个任务,可以利用 `Timer` 类的 `schedule()` 方法。此方法接受一...
在Java编程语言中,`Timer`和`TimerTask`是两个重要的类,它们用于调度周期性的任务执行。这两个类属于`java.util`包,提供了在后台线程中延迟执行任务或者定期执行任务的能力,这对于创建定时任务或者实现定时器...
`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` 和 `scheduleAtFixedRate(TimerTask task, long delay, long period)`。前者会在指定的延迟后执行一次任务,而后者则会按照固定的延迟...