• java中服务器启动执行定时任务


    在项目中有时经常会有这样一种情景,就是需要系统定时的执行一个任务,比如:向另外一个系统发送文件、发送消息、处理某些不需要实时性的信息等。这时,我们就用到了定时任务。

          下面介绍java定时执行任务:

           1、TestTimerListener.java执行定时任务,实现servlet的ServletContextListener接口,当服务器启动时开始执行TestTask任务,通过方法timer.scheduleAtFixedRate(new FulongTask(), 7 * 1000, 60 * 60 * 1000); // 每小时执行一次run方法    测试5秒5 * 1000执行TestTask.java的run方法

      

     1 import java.util.Timer;
     2 
     3 import javax.servlet.ServletContextEvent;
     4 import javax.servlet.ServletContextListener;
     5 
     6 public class TestTimerListener implements ServletContextListener {
     7 
     8     private Timer timer = null;
     9 
    10     @Override
    11     public void contextInitialized(ServletContextEvent event) {
    12         timer = new Timer(true);
    13         event.getServletContext().log("定时器已启动"); //60 * 60 * 1000
    14         // 服务器启动后,延迟7秒启动,5秒执行一次
    15         timer.scheduleAtFixedRate(new TestTask(), 7 * 1000, 5 * 1000); // 每小时执行一次run方法    测试5秒5 * 1000
    16     }
    17 
    18     @Override
    19     public void contextDestroyed(ServletContextEvent event) {
    20         if (timer != null) {
    21             timer.cancel();
    22             event.getServletContext().log("定时器销毁");
    23         }
    24     }
    25 }
     1 import java.util.TimerTask;
     2 
     3 public class TestTask extends TimerTask {
     4 
     5     private static boolean isRunning = false;
     6 
     7     @Override
     8     public void run() {
     9         // 是否整点
    10         // Calendar c = Calendar.getInstance();
    11         // if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))
    12 
    13         if (!isRunning) {
    14 
    15             isRunning = true;
    16             System.out.println("开始执行任务。");
    17 
    18             int i = 0;
    19             while (i++ < 10) {
    20                 System.out.println("已完成任务的" + i + "/" + 10);
    21             }
    22 
    23             isRunning = false;
    24             System.out.println("任务执行结束。");
    25 
    26         } else {
    27             System.out.println("上一次任务执行还未结束,本次任务不能执行。");
    28         }
    29 
    30     }
    31 }

    最后,在web.xml文件中配置:

    1 <listener>
    2         <listener-class>com.common.TestTimerListener</listener-class>
    3     </listener>

    就可以了

  • 相关阅读:
    C#编程:依赖倒置原则DIP
    java项目与javaweb项目导入jar包的区别
    《C#从入门到精通(第3版)》目录
    Sublime Text 格式化代码
    ThinkPHP 入门
    CentOS 7.2配置LAMP环境——yum版
    打包名命令:tar
    不规则数组的构建
    Linux文件权限概念
    tomcat启动成功但是没有监听8080端口
  • 原文地址:https://www.cnblogs.com/wdpnodecodes/p/8022042.html
Copyright © 2020-2023  润新知