zoukankan      html  css  js  c++  java
  • JAVA定时执行任务的三种方法

    1.利用 java.util.Timer

    这个方法应该是最常用的,不过这个方法需要手工启动你的任务

    Timer timer=new Timer();
    timer.schedule(new ListByDayTimerTask(),10000,86400000);

    这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法,然后再run方法里面写你要执行的内容

    2.web容器环境中可以使用上下文监听器ServletContextListener

    这个方法在web容器环境比较方便,这样,在web server启动后就可以自动运行该任务,不需要手工操作。将ListByDayListener implements ServletContextListener接口,在contextInitialized方法中加入启动Timer的代码,在contextDestroyed方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:

    < listener>
    < listener-class>com.qq.customer.ListByDayListener< /listener-class>
    < /listener>

    3.使用spring框架的方式:

    如果你用spring,那么不需要写Timer类,在配置文件schedulingContext-timer.xml中加入下面的内容就可以了:

    < ?xml version="1.0" encoding="UTF-8"?>
    < !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    
    < beans>
    < bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
    < property name="scheduledTimerTasks">
    < list>
    < ref local="MyTimeTask1"/>
    < /list>
    < /property>
    < /bean>
    
    < bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>
    
    < bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
    < property name="timerTask">
    < ref bean="MyTimeTask"/>
    < /property>
    < property name="delay">
    < value>10000< /value>
    < /property>
    < property name="period">
    < value>86400000< /value>
    < /property>
    < /bean>
    < /beans> 
  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4545735.html
Copyright © 2011-2022 走看看