从Java 1.3开始,Java SDK就通过java.util.Timer类提供了基本的调度功能。这个类允许你调度一个任务(通过java.util.TimerTask子类定义)按任意周期运行。
创建一个定时器任务
使用Java Timer来调度定时删除文件的功能,第一步是从java.util.TimerTask中派生出删除文件的任务,如以下程序所示。
CertZip.java
public class CertZip {
private static final String separator = File.separator;
Logger log = Logger.getLogger(CertZip.class);
protected final int DELETE_START_TIMING = 5;// 5分钟后自动删除
public void deleteZipAndPenf() {
File dir = new File(saveZipPath);
for (File file : dir.listFiles()) {
if (file.getName().lastIndexOf(".zip") > 1
|| file.getName().lastIndexOf(".penf") > 1) {
Date date = new Date(file.lastModified());
Calendar cd = Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.MINUTE, +DELETE_START_TIMING);
if (!cd.getTime().after(Calendar.getInstance().getTime())) {
log.info("开始删除文件:" + file.getAbsolutePath());
log.info("删除结果:" + file.delete());
}
}
}
}
}
DeleteZipTimer.java
public class DeleteZipTimer extends TimerTask {
private CertZip zip ;
public void setZip(CertZip zip) {
this.zip = zip;
}
@Override
public void run() {
zip.deleteZipAndPenf();
}
}
run()方法定义了当任务运行时该做什么。在上面的例子中,它调用CertZip 的deleteZipAndPenf()方法用来定时删除文件。CertZip 是通过依赖注入方式提供给DeleteZipTimer 的。
按以下方式在Spring配置文件中声明DeleteZipTimer :
<bean id="deleteZipTimer" class="com.unica.util.DeleteZipTimer">
<constructor-arg ref="certZip"/>
</bean>
<bean id="deleteZipTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay" value="600000"/>
<property name="period" value="7200000"/>
<property name="timerTask" ref="deleteZipTimer"/>
</bean>
在ScheduledTimerTask这个类中我通过spring给该类的2个属性赋值
delay:指定程序执行期间间隔的时间
period:指定这个任务应该多长时间运行一次
注:以上单位全部为毫秒数
分享到:
相关推荐
下面我们将深入探讨这两种任务调度器及其在Spring中的使用。 首先,我们来看`Spring Timer`。`Spring Timer`是Spring框架提供的一个简单任务调度工具,它基于Java的`java.util.Timer`类。通过`@Scheduled`注解,...
在Java编程语言中,`Timer`类和Spring框架的定时任务是两种常见的实现定时执行任务的方式。本篇文章将深入探讨这两个主题,旨在帮助初学者理解它们的工作原理以及如何在实际项目中应用。 首先,让我们来看一下Java...
在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...
在Spring中使用`Timer`,有两种主要的方法来创建和调度这些时间触发的事件任务: 1. **继承TimerTask创建任务** 这种方法与传统的Java `Timer`用法相似。你需要创建一个类,继承自`java.util.TimerTask`,并重写`...
在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`,以及更强大的第三方库如Quartz Scheduler和Spring框架中的`@Scheduled`注解等...
在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确地在特定时间点执行任务,比如设置每天特定时间执行的任务。 Quartz是一个强大且灵活的开源作业...
本篇文章将深入探讨Java中的三种主要时间调度实现:`Timer`、`TimerTask`、以及第三方库`Quartz`和`Spring`的定时任务功能。 ### 1. Java `Timer` 和 `TimerTask` `java.util.Timer` 类提供了一个调度任务的方法,...
而在Spring框架中,任务调度是一个重要的特性,用于自动执行预定的任务。本实例主要探讨了Spring如何实现任务调度,特别是使用Quartz和Timer两种不同的方法。 首先,Quartz是一个开源的作业调度框架,它允许开发者...
本教程将详细介绍如何在Spring中使用`Timer`来实现能精确到几点运行的定时任务。 首先,我们需要理解`Timer`的基本概念。`java.util.Timer`和`java.util.TimerTask`是Java中的两个类,用于调度未来任务的执行。`...
下面我们将深入探讨如何使用`Timer`进行任务调度,以及与Spring的Quartz框架的对比。 1. **Timer类的基本用法** - 创建`Timer`对象:`Timer timer = new Timer();` - 定义`TimerTask`:创建一个继承自`TimerTask`...
要在Spring中使用Timer,你需要创建一个TimerTask实现类,然后在Spring配置文件中声明并配置该任务。例如: ```xml <bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean"> ...
在Java世界中,任务调度是十分重要的,Spring框架提供了多种定时任务实现方式,其中包括Quartz和Timer。Quartz是一款开源的作业调度框架,而Timer是Java标准库中的一个类,用于执行定时任务。这两个工具都能帮助...
标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...
在【标题】"Spring的定时任务开发及对Quartz和Timer支持"中,涉及到的是Spring在处理定时任务方面的特性,这在企业级应用中非常常见,用于执行一些周期性的后台任务,如数据同步、报表生成、清理任务等。 首先,...
在实际使用中,如果你的应用只需要简单的定时任务,如定期清理缓存,那么`java.util.Timer` 就足够了,它简洁易用,且不需要额外的依赖。但如果你需要处理复杂的定时需求,如根据业务规则动态调整任务执行时间,或者...
JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...
在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` 和 `scheduleAtFixedRate...
JAVA开发语言中,调度程序实现的办法有很多,从最底层的线程到Timer,都是最基本的调度实现。当前很多开源项目也提供了比较全面的调度功能,如quartz、jcrontab、JobServer等,在这里我介绍一种比较简单的调度,没有...
在上述示例中,我们看到了如何使用Spring结合Java Timer API来创建定时任务。首先,自定义了一个`SayHelloTask`类,继承自`TimerTask`,并在`run()`方法中定义了具体要执行的任务。例如,输出一句"测试 TimerTask : ...
Spring 提供了多种定时任务的实现方式,包括 Java 自带的 Timer、Quartz 和 Spring 自己的 Scheduled 任务调度。在 Spring Boot 中,Scheduled 任务调度变得更加简单易用。 `@Scheduled` 是 Spring 提供的一个注解...