博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 定时任务-servlet
阅读量:5273 次
发布时间:2019-06-14

本文共 2217 字,大约阅读时间需要 7 分钟。

在web.xml中配置监听类。

com.skin.generate.action.TaskManager

监听时间Properties文件配置。

#定时任务配置文件#定时刷新数据库实例时间(毫秒)  24*60*60*1000(一天)task.databaseInstance.time=86400000#定时刷新数据库实例当天的几点开始执行1task.databaseInstance.clock=1#定时刷新数据库实例当天的某分钟开始执行task.databaseInstance.min=10

实现监听类,监听类实现ServletContextListener,contextInitialized 方法会在侦听器初始化的时候调用。

import java.util.Calendar;import java.util.Date;import java.util.Properties;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import com.skin.webcat.util.ProPertiesUtils;public class TaskManager implements  ServletContextListener{    private Timer timer = null;    @Override    public void contextInitialized(ServletContextEvent arg0) {        Properties proPerties = ProPertiesUtils.getProPerties("task.properties");        timer = new Timer();        CheckDatabaseInstanceTask msendTask = new CheckDatabaseInstanceTask();        Calendar calendar = Calendar.getInstance();        calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf((String) (proPerties.get("task.databaseInstance.clock"))));        calendar.set(Calendar.MINUTE, Integer.valueOf((String) (proPerties.get("task.databaseInstance.min"))));        calendar.set(Calendar.SECOND, 0);        Date date = calendar.getTime(); // 第一次执行定时任务的时间        if (date.before(new Date())) {              date = this.addDay(date, 1);            }          timer.schedule(msendTask, date, Integer.valueOf((String) (proPerties.get("task.databaseInstance.time"))));    }        @Override    public void contextDestroyed(ServletContextEvent arg0) {        timer.cancel();         }        public Date addDay(Date date, int num) {          Calendar startDT = Cale    ndar.getInstance();          startDT.setTime(date);          startDT.add(Calendar.DAY_OF_MONTH, num);          return startDT.getTime();         }  }

执行任务类实现,其继承啦jdk自带的TimerTask类,在run方法中写定时任务执行的内容。

import java.util.ArrayList;import java.util.List;import java.util.TimerTask;public class CheckDatabaseInstanceTask  extends TimerTask{    /**     * 任务逻辑处理方法     */    @Override    public void run() {        System.out.println("我是处理任务的方法");    }}

 

转载于:https://www.cnblogs.com/TimeSay/p/9140734.html

你可能感兴趣的文章
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>