JAVA的定时任务

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);
//设置其他执行时间修改对应的时分秒即可 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值