JAVA的定时任务

来源:互联网 发布:贵州大数据发展报告 编辑:程序博客网 时间:2024/05/22 15:47

1. 监听器

import java.util.Calendar;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import com.suoya.upload.task.MyTask;public class TaskListener implements ServletContextListener {        /**        * 每天的毫秒数 ,时间间隔一天      */      public static final long PERIOD_DAY=24 * 60 * 60 * 1000;     /**        * 无延迟        */       public static final long NO_DELAY = 0;        /**        * 定时器        */       private Timer timer;        /**        * 在Web应用启动时初始化任务        */       public void contextInitialized(ServletContextEvent event) {               //定义定时器         timer = new Timer("执行定时任务",true);          Calendar cal = Calendar.getInstance();      //每天定点执行        cal.set(Calendar.HOUR_OF_DAY,12);        cal.set(Calendar.MINUTE,0);        cal.set(Calendar.SECOND,0);       timer.schedule(new MyTask(),cal.getTime(), PERIOD_DAY);        }        /**        * 在Web应用结束时停止任务        */       public void contextDestroyed(ServletContextEvent event) {         timer.cancel(); // 定时器销毁        }   }

2. 自定义定时任务

import java.util.TimerTask;/** * 自定义定时任务,web容器启动的时候启动 * @author sunt * @dade 2017年4月27日下午3:45:07 * @version v1.0 */public class MyTask extends TimerTask {     private static boolean isRunning = false;       @Override     public void run() {                    if (!isRunning) {                        isRunning = true;                    System.out.println("开始执行任务..."); // 开始任务                    System.out.println("====================>开始定时调用业务逻辑功能...");                    System.out.println("执行任务完成..."); // 任务完成                    isRunning = false;                      } else {                           System.out.println("上一次任务执行还未结束..."); //上一次任务执行还未结束                     }         }  }

3. web容器配置监听器

<!-- 监听器的配置 -->    <listener>           <listener-class>com.suoya.upload.linster.TaskListener</listener-class>      </listener>

4. 执行定时任务
MyTask 中run()方法调用定时逻辑的方法

//代表每天十二点执行一次cal.set(Calendar.HOUR_OF_DAY,12);cal.set(Calendar.MINUTE,0);cal.set(Calendar.SECOND,0);//设置其他执行时间修改对应的时分秒即可 
0 0
原创粉丝点击