`
imshare
  • 浏览: 321908 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

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

阅读更多
从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 timer、quartz俩种任务调度

    实现了spring配置比较流行的任务调度操作,java timer 和 quartz俩种方式 并且有注释描述。

    运用Spring框架实现简单调度

    JAVA开发语言中,调度程序实现的办法有很多,从最底层的线程到Timer,都是最基本的调度实现。当前很多开源项目也提供了比较全面的调度功能,如quartz、jcrontab、JobServer等,在这里我介绍一种比较简单的调度,没有...

    Java关于时间调度的几种实现方(Timer Quartz Spring)

    Java关于时间调度的几种实现方(Timer TimerTask Quartz Spring)

    java是使用timer调度的例子

    java中用timer调度,像spring提供的Quartz一样,这里是自己调用java API中的timer写的,忘下载者给与评价

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    这个注解主要基于Java的内置Timer类以及Quartz等定时任务库,但在Spring Boot中,它提供了更加简洁和易用的方式来实现定时任务。 # 实现原理 @Scheduled注解的实现原理主要依赖于Spring框架的任务调度机制。当...

    Sring最佳实践-集成任务调度服务

    Sring最佳实践-集成任务调度服务,之前做的Demo,希望对大家有所帮助!!!

    SPRING 定时器的使用

    并非应用系统中发生的所有事情都是由用户的动作引起的。...在Spring中有两种流行配置:Java的Timer类和OpenSymphony的Quartz来执行调度任务。下面以给商丘做的接口集抄900到中间库的日冻结数据传输为例:

    任务调度开源框架Quartz动态添加、修改和删除定时任务

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring排程(Scheduling)技术

    Spring排程(Scheduling)技术 1、排程(Scheduling)原理 2、什么是Timer 1)、执行一次 2)、周期执行 3、在spring中使用Timer 4、在spring中使用Quartz调度器

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring in Action(第二版 中文高清版).part2

    12.3.1 使用Java Timer调度任务 12.3.2 使用Quartz调度器 12.3.3 按调度计划调用方法 12.4 使用JMX管理Spring Bean 12.4.1 将Spring Bean输出为MBean 12.4.2 远程访问MBean 12.4.3 处理通知 12.5 小结 第...

    Spring in Action(第二版 中文高清版).part1

    12.3.1 使用Java Timer调度任务 12.3.2 使用Quartz调度器 12.3.3 按调度计划调用方法 12.4 使用JMX管理Spring Bean 12.4.1 将Spring Bean输出为MBean 12.4.2 远程访问MBean 12.4.3 处理通知 12.5 小结 第...

    spring in action英文版

     7.3.1 使用Java Timer调度任务  7.3.2 使用Quartz调度器  7.3.3 按调度计划调用方法  7.4 使用JMS发送消息  7.4.1 使用JMS模板发送消息  7.4.2 消费消息  7.4.3 转换消息  7.5 小结 第三...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    spring4.1核心包

    这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring in Action(第2版)中文版

    12.3.1使用javatimer调度任务 12.3.2使用quartz调度器 12.3.3按调度计划调用方法 12.4使用jmx管理springbean 12.4.1将springbean输出为mbean 12.4.2远程访问mbean 12.4.3处理通知 12.5小结 第三部分spring...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

Global site tag (gtag.js) - Google Analytics