Javaweb中的定时器

1.任务类

import java.util.TimerTask;
import javax.servlet.ServletContext;

public class MyTask extends TimerTask{
    private ServletContext context = null;

    public CleanTpIpTask(ServletContext servletContext) {
        this.context = servletContext;
    }

    @Override
    public void run() {
        //定时任务逻辑代码
    }

}

2.监听类

import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyTaskListener implements ServletContextListener {
    private java.util.Timer timer = null;
    MyTask myTask = null;
    public void contextDestroyed(ServletContextEvent arg0) {
        timer.cancel();

    }
    public void contextInitialized(ServletContextEvent arg0) {
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        c.set(year, month, day, 3, 0, 0);//项目启动当天凌晨3点执行1次,如果已经超过凌晨3点,立刻执行
        Date date = c.getTime();
        timer = new java.util.Timer(true); 

        int period = 24 * 60 * 60 * 1000;//执行间隔
        if(myTask==null){
            myTask = new MyTask(arg0.getServletContext());
            timer.schedule(new MyTask(arg0.getServletContext()), date, period);  
            //timer.schedule(new CleanTpIpTask(arg0.getServletContext()), date);//只执行1次
            //timer.schedule(new CleanTpIpTask(arg0.getServletContext()), 0, period);//项目启动立刻执行,每隔period 毫秒执行1次
        }
    }
}

3.在web.xml中配置

  <listener>
      <listener-class>webservice.MyTaskListener</listener-class>
  </listener>

原文地址:https://www.cnblogs.com/dch0/p/12706608.html

时间: 04-15

Javaweb中的定时器的相关文章

MFC的DLL中实现定时器功能

方法一:创建一个线程, 反复读系统时间不就可以了? 如果定时要求不严,用Sleep就可以了.DWORD WINAPI TimerThread(LPVOID pamaram) { UINT oldTickCount, newTickCount; oldTickCount = GetTickCount(); //获取的是毫秒数 while(TRUE) { while(TRUE) { newTickCount = GetTickCount(); // 获取的是毫秒数 if(newTickCount -

Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器.通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符.这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObjec

Java中的定时器

注意:内容来自网络他人文章,特此声明 一.Java中的定时器 在JAVA中实现定时器功能要用的2个重要类是 Timer类:定时器类,需要一个TimerTask类的实例作为参数: TimerTask:定时器任务类,定时器要执行的任务在该类的run方法中定义. 二.实现定时器的两种写法 1.普通实现(相对于通过内部类来实现而言) 1 //先写一个类 2 public class TimeTest { 3 public static void main(String[] args) { 4 5 Tim

个人对JavaWeb中MVC与三层架构的区别理解

JavaWeb中MVC是指B/S结构开发中的一种设计模式,能够将Web页面与业务逻辑以及数据库操作之间的耦合性降到最低点,易于代码的重用以及后期维护.而三层架构的概念在JavaWeb中则是指Web层,业务层,数据层.但三层架构中却是把MVC中的Model,也就是JavaBeans分成业务层和数据层,而把Controller控制器以及View视图合并成Web层.二者之间最大的区别在于MVC只限于JavaWeb,而三层架构则能够实现在非Web应用平台之上,只需替换掉Web层足以,而业务层与数据层依旧

第十四篇:在SOUI中使用定时器

前言 定时器是win32编程中常用的制作动画效果的手段.在Win32编程中,可以使用::SetTimer来创建定时器,定时器消息会被会发到调用SetTimer时指定的HWND. 在SOUI中一般来说只有一个宿主窗口有HWND,所有的SWindow都属于一个宿主窗口,如此一来直接使用::SetTimer创建的定时器就难以直接分发到SWindow对象了. 在SOUI的控件中使用定时器 为了能够方便的在SWindow中使用定时器,在SOUI系统中,我们通过将定时器ID(共32位)按位进行分解: cla

怎样运用MindMapper中的定时器

MindMapper思维导图中有一个看起来不显眼的功能,那就是定时器功能,一个类似闹钟的功能,我们可以用来提醒某一定时任务,比如当我们 在绘制导图时,给自己定下目标绘图时间为20分钟,我们就可以用此功能来进行计时,下面本文就详细讲解了MindMapper定时器功能. 若有疑问可直接访问:http://www.mindmapper.cc/jiqiao/mmp-dingshiqi.html 我们打开MindMapper思维导图,可以在[插入结构]中找到定时器功能图标. 下拉框中有着计时选项,从十分钟

node 中的定时器, nextTick()和setImmediate()的使用

1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中的定时器就简单的讲这么多. 2.看代码: 1 process.nextTick(function(){ 2 console.log("延迟执行"); 3 }); 4 5 console.log("正常执行1"); 6 console.log("正常执行2&qu

关于STM32数据手册中的定时器信号

首先,我们可以看到这个图大概有两个不分,一个部分是时钟源,另一个部分则是输入输出 时钟源计数,到CNT计数器,然后根据捕获比较寄存器进行记录或比较.记录或比较有不同的配置. 首先是TI信号TI1 TI2 TI3 TI4:这个信号就是外部信号,是直接与管脚相连的信号,图中还有一个问题就是TI1是可以是第一通道的外部信号进行触发,也可以设置为,第一通道,第二通道,第三通道异或进行触发.外部信号送往滤波器和边沿检测器. TIxFP触发有效信号.  TI1FP1 TI1FP2 TI2FP1 TI2FP2

内核中的定时器

使用内核定时器的场景: 如果我们需要在将来的某个时间点上来执行某个动作,同时在这个时间点到来之前并不会阻塞当前进行的运行的话,我们可以通过内核定时器来实现.通过使用内核定时器,内核会在这个时间到达时(当然内核中的时间是用时钟中断数来表示的,即内核通过比较当前的jiffies中的值与我们定义的那个时钟中断数,来判断是否到时),来执行我们定义的函数,这样可以实现在一个进程中用来实现多个任务.    在内核中用 struct timer_list 来表示一个内核定时器,这个struct timer_l

cocos2dx中的定时器及其分类

cocos2dx中的定时器分三大类: 1.帧循环定时器 2.一次性定时器 3.自定义定时器 一.帧循环定时器,顾名思义,每一帧都会执行一次,用于实时性要求比较高的场合,如碰撞检测 void scheduleUpdate(void);//其实是schedule+Update的组合,即定时执行Update函数的意思 --------启动定时器 virtual void update(float delta);//这是需要自己实现的虚函数,我们重载(override),update方法以执行我们自己的