相信大家都已经非常熟悉 java.util.Timer 了,它是最简单的一种实现任务调度的方法,下面给出一个具体的例子:
package com.ibm.scheduler; import java.util.Timer; import java.util.TimerTask; public class TimerTest extends TimerTask { private String jobName = ""; public TimerTest(String jobName) { super(); this.jobName = jobName; } @Override public void run() { System.out.println("execute " + jobName); } public static void main(String[] args) { Timer timer = new Timer(); long delay1 = 1 * 1000; long period1 = 1000; // 从现在开始 1 秒钟之后,每隔 1 秒钟执行一次 job1 timer.schedule(new TimerTest("job1"), delay1, period1); long delay2 = 2 * 1000; long period2 = 2000; // 从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 job2 timer.schedule(new TimerTest("job2"), delay2, period2); } } Output: execute job1 execute job1 execute job2 execute job1 execute job1 execute job2
使用 Timer 实现任务调度的核心类是 Timer 和 TimerTask。其中 Timer 负责设定 TimerTask 的起始与间隔执行时间。使用者只需要创建一个 TimerTask 的继承类,实现自己的 run 方法,然后将其丢给 Timer 去执行即可。
Timer 的设计核心是一个 TaskList 和一个 TaskThread。Timer 将接收到的任务丢到自己的 TaskList 中,TaskList 按照 Task 的最初执行时间进行排序。TimerThread 在创建 Timer 时会启动成为一个守护线程。这个线程会轮询所有任务,找到一个最近要执行的任务,然后休眠,当到达最近要执行任务的开始时间点,TimerThread 被唤醒并执行该任务。之后 TimerThread 更新最近一个要执行的任务,继续休眠。
Timer 的优点在于简单易用,但由于所有任务都是由同一个线程来调度,因此所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务。
相关推荐
首先,`java.util.Timer`是一个线程类,它维护了一个调度队列,用于存储将要执行的任务。当我们创建一个Timer对象时,实际上启动了一个后台线程,这个线程会不断地检查是否有任务需要执行。 `TimerTask`是`Timer`...
同时,提及了Timer和TimerTask,它们用于任务调度,这是java.util的一部分,用于在后台线程中安排任务执行。另外,还提到了异常类EmptyStackException和NoSuchElementException,它们分别在Stack类和Enumeration接口...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
Java.util.Timer 是 Java 平台中用于实现定时任务调度的一个工具类。它允许开发者安排任务在将来某个特定时刻或按照一定的周期重复执行。任务调度在软件开发中扮演着重要角色,尤其是在需要自动化处理、定期检查或...
13. Timer和TimerTask:定时任务调度,可以安排一次或周期性的任务执行。 14. Bitset:位集,用于高效存储和操作位标志。 15. Iterator和ListIterator:迭代器接口,用于遍历集合中的元素,ListIterator还支持双向...
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...
它使用`java.util.TimerTask`作为任务的具体实现类,通过`Timer`调度`TimerTask`来完成定时任务的执行。 #### 三、`java.util.Timer`与`java.util.TimerTask`详解 ##### 3.1 `java.util.Timer` `Timer`类是Java...
`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入探讨`Timer`类的基本使用和示例,帮助你理解如何在Java程序中实现简单的定时任务。 首先,`Timer`类提供了计划...
在Java编程语言中,实现调度器是一个常见的任务,它涉及到定时执行特定的代码段或任务。这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了...
在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`,以及更强大的第三方库如Quartz Scheduler和Spring框架中的`@Scheduled`注解等...
这里的关键词是“java.util.Timer”和“java.util.TimerTask”,这两个类在Java中用于实现定时任务的调度。 ### 标签:“schedule” 标签同样为“schedule”,进一步确认了文档的核心关注点在于定时任务的安排与...
`Timer`类是Java标准库中的一个基础定时器,可以用来调度周期性的任务。创建一个`Timer`实例后,我们可以通过`schedule(TimerTask task, long delay)`或`scheduleAtFixedRate(TimerTask task, long initialDelay, ...
### Java软件开发实战:利用Timer类调度任务 在Java软件开发过程中,经常需要处理定时执行的任务,例如定期发送电子邮件、定时备份数据等场景。为了满足这些需求,Java自1.3版本起引入了`java.util.Timer`类,该类...
`java.util.Timer` 是Java早期提供的一个简单任务调度工具类,它使用单线程来处理所有任务,因此在并发任务较多的情况下可能存在一定的性能瓶颈。 ##### 示例代码解析: ```java package com.ibm.scheduler; import...
Java提供了多种实现定时任务的机制,这里主要介绍两种:Java.util.Timer类和java.util.concurrent.ScheduledExecutorService接口。 1. Java.util.Timer类: Timer类是Java早期提供的定时任务工具,它可以安排在...
在Java中,我们可以利用`java.util.Timer`类和`java.util.TimerTask`类来实现简单的定时任务,但这种实现方式存在线程安全问题。在Web应用中,我们可以利用Servlet容器提供的特性来更优雅地处理定时任务,这就是描述...
总结一下,Java中实现定时任务主要依靠`java.util.Timer`、`java.util.concurrent.ScheduledExecutorService`等原生API,以及一些第三方库如Quartz。在实际开发中,选择合适的定时任务解决方案需要考虑项目的复杂性...
这里我们将深入探讨两种主要的方法:Java的`java.util.Timer`类和Java 5及以上版本引入的`java.util.concurrent.ScheduledExecutorService`接口。 首先,我们来了解`java.util.Timer`类。这个类允许开发者创建一个...
Java提供了多种实现定时任务的方式,其中最常用的包括`java.util.Timer`类和`java.util.concurrent.ScheduledExecutorService`接口。本篇文章将深入探讨这两种方法以及它们在实际应用中的使用。 首先,我们来看`...
`java.util.Timer`是一个轻量级的定时器类,它可以用来调度定时任务。它支持两种类型的调度:一次性执行(即只执行一次)和周期性执行(即重复执行)。`Timer`类内部使用了一个单线程的`Executor`来执行任务,因此它...