Web定时器 - Timer
下面就Servlet侦听器结合Java 定时器来讲述整个实现过程。要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实 现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。考虑定时器有个建立和销毁的过程,看了前面两个接口函数,就不容置疑的把建立的过程置入 contextInitialized,把销毁的过程置入contextDestroyed了。
- package com.derek.servlet;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.derek.pub.TimerManager;
- /**
- * 启动定时器的监听器
- * @author derek
- * @version 1.0
- */
- public class TimerListener extends HttpServlet implements
- ServletContextListener {
- private TimerManager tm = null;
- //Notification that the web module is ready to process requests
- public void contextInitialized(ServletContextEvent sce) {
- int day,hour,min,sec;
- day = 26; hour = 16; min = 42; sec = 0;
- tm = new TimerManager(day,hour,min,sec);
- }
- //Notification that the servlet context is about to be shut down
- public void contextDestroyed(ServletContextEvent sce) {
- tm.destoryTimer();
- }
- }
- package com.derek.pub;
- import java.util.Timer;
- import java.util.Date;
- import java.util.Calendar;
- /**
- * 定时器
- * @author derek
- * @version 1.0
- */
- public class TimerManager {
- Timer t = null;
- public TimerManager(int day,int hour,int min,int sec) {
- time(day,hour,min,sec);
- }
- public void time(int day,int hour,int min,int sec){
- Calendar c = Calendar.getInstance();
- c.set(Calendar.DAY_OF_MONTH,day);
- c.set(Calendar.HOUR_OF_DAY,hour);
- c.set(Calendar.MINUTE,min);
- c.set(Calendar.SECOND,sec);
- Date date = c.getTime();
- System.out.println(c.getTime());
- t= new Timer();
- MyTask mt = new MyTask();
- t.schedule(mt,date);
- }
- public void destoryTimer(){
- t.cancel();
- }
- }
- package com.derek.pub;
- import java.util.TimerTask;
- /**
- * 计划任务代码
- * @author derek
- * @version 1.0
- */
- public class MyTask extends TimerTask{
- public MyTask() {
- }
- /**
- * 任务块
- */
- public void run() {
- System.out.println("定时器RUN");
- }
- }
- private java.util.Timer timer = null;
- public void contextInitialized(ServletContextEvent event) {
- timer = new java.util.Timer(true);
- event.getServletContext().log("定时器已启动");
- timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);
- event.getServletContext().log("已经添加任务调度表");
- }
- public void contextDestroyed(ServletContextEvent event) {
- timer.cancel();
- event.getServletContext().log("定时器销毁");
- }
- private static final int C_SCHEDULE_HOUR = 0;
- private static boolean isRunning = false;
- private ServletContext context = null;
- public MyTask(ServletContext context) {
- this.context = context;
- }
- public void run() {
- Calendar cal = Calendar.getInstance();
- if (!isRunning) {
- if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
- isRunning = true;
- context.log("开始执行指定任务");
- //TODO 添加自定义的详细任务,以下只是示例
- int i = 0;
- while (i++ < 10) {
- context.log("已完成任务的" + i + "/" + 10);
- }
- isRunning = false;
- context.log("指定任务执行结束");
- }
- } else {
- context.log("上一次任务执行还未结束");
- }
- }
- 2003-12-05 0:21:39 开始执行指定任务
- 2003-12-05 0:21:39 已完成任务的1/10
- ……
- 2003-12-05 0:21:39 已完成任务的10/10
- 2003-12-05 0:21:39 指定任务执行结束
转载于:https://blog.51cto.com/nanhaochen/45593
Web定时器 - Timer相关推荐
- java web定时器_java的web项目中使用定时器 | 学步园
之前接触过程序中的定时任务,但是没去自己亲自尝试过.终于这次抽空搞了一下.(一定要自己去操作,才能长经验,光看到过是没用的) 以下是两种方法,我使用的是监听的方法. JAVA WEB定时器,定时器的启 ...
- 【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )
文章目录 一.Timer 定时器基本使用 二.Timer 定时器常用用法 三.Timer 源码分析 四.Timer 部分源码注释 五.源码及资源下载 参考文档 : Timer 定时器 API 文档 T ...
- Java定时器Timer
Java定时器Timer 在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划 ...
- python定时器 是线程吗_python线程定时器Timer(32)
相对前面几篇python线程内容而言,本片内容相对比较简单,定时器 – 顾名思义,必然用于定时任务. 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如: ...
- python定时器timer_python通过线程实现定时器timer的方法
本文实例讲述了python通过线程实现定时器timer的方法.分享给大家供大家参考.具体分析如下: 这个python类实现了一个定时器效果,调用非常简单,可以让系统定时执行指定的函数 下面介绍以thr ...
- 第5章 定时器Timer
第5章 定时器Timer 标签: Java多线程编程 <Java多线程编程核心技术> 个人笔记 第5章 定时器Timer 定时器Timer的使用 方法scheduleTimerTask t ...
- python中实现定时器Timer
实现定时器最简单的办法是就是循环中间嵌time.sleep(seconds), 这里我就不赘述了 # encoding: UTF-8 import threading #Timer(定时器)是Thre ...
- Python 线程定时器 Timer - Python零基础入门教程
目录 一.Python 线程定时器 Timer 原理 二.Python 线程定时器 Timer 使用 三.Python 线程定时器 Timer 总结 四.猜你喜欢 零基础 Python 学习路线推荐 ...
- 定时器Timer的实现
定时器Timer的实现 定时器在实际项目中会用的比较平凡.因此,本文首先介绍定时器Timer的windows版本,跨平台的定时器将在下一篇文章中介绍.它们的源代码均用C++编写.源代码详见:https ...
最新文章
- 第一章 Mysql 简介及安装和配置
- R基于H2O包构建深度学习模型实战
- linux为3种人准备了权限,linux的3种特殊权限
- api服务器开发语言,【API编写】介绍一个国内强大的API接口文档写作网站showdoc - 最好的编程语言 - 博客园...
- 联想拯救者y空间兑换代码_锐祥贴片Y电容进入联想手机快充供应链,性能获世界500强认可...
- 工业机器人用铸铁牌号_常用铸铁牌号
- 第 3 章 镜像 - 015 - 调试 Dockerfile
- PHP网站源码-ThinkPHP5框架内核开发图书管理系统
- 在私企里,男工人能工作到退休年龄60岁吗?
- LVS负载均衡集群服务搭建详解(一)
- 智能家居如何让消费者心甘情愿地买单
- 奥维天地图解决办法!如何申请个人天地图API密钥?
- simulink教程(自动控制原理)
- uniapp仿淘宝--商品详情模板
- java中Graphics类的使用
- sgsn与ggsn的区别与联系
- 打印菱形图案用java如何做_Java打印出菱形图案
- 2019春第一周编程总结
- php同时接受get post,php中form表单同时使用POST和GET传递参数说明
- 计算机网络(第7版)谢希仁著 学习笔记 第四章网络层
热门文章
- 清空linux当前页面内容,linux文档整理
- hadoop中的9000端口代表什么_启动hadoop后,fs.defaultFS中配置的9000端口没有出现在监听中?...
- python框架flask_Python开发框架Flask-阿里云开发者社区
- android中屏保功能项目,【Android】一段时间不操作弹出【屏保】效果
- 程序员笔试网上查答案,HR吐槽,网友:你们公司断网开发吗?
- 函数节流你应该知道的那点事
- web前端开发是干嘛的?
- 掌握这8个CSS开发工具让你瞬间成为开发高手
- 谁不想写出干净的代码?7 个技巧,让你的同事爱上你的代码
- 转型HTML5前端工程师怎样学才能拿高薪?