在Spring中使用Java Timer进行任务调度

从Java 1.3开始,Java SDK就通过java.util.Timer类提供了基本的调度功能。这个类允许你调度一个任务(通过java.util.TimerTask子类定义)按任意周期运行。

[b]创建一个定时器任务 [/b]
使用Java Timer来调度定时删除文件的功能,第一步是从java.util.TimerTask中派生出删除文件的任务,如以下程序所示。
[b]CertZip.java[/b]

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());
}
}
}
}
}



[b]DeleteZipTimer.java[/b]

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:指定这个任务应该多长时间运行一次
注:以上单位全部为毫秒数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值