Java Timer定时器时,每次重复执行了两次任务的解决方案
web.xml监听配置
com.numenzq.mc.service.impl.TimerListener
TimerListener类
public class TimerListener implements ServletContextListener {
private Timer timer;
private TimerTaskSelf task;
/**
* @see 销毁
*/
@Override
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
}
/**
* @see 创建
*/
@Override
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
task = new TimerTaskSelf(event.getServletContext());
//执行任务指定间隔
timer.scheduleAtFixedRate(task, 0, 1000*60*50);
}
}
自定义任务类
package com.numenzq.mc.service.impl;
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import org.apache.log4j.Logger;
public class TimerTaskSelf extends TimerTask {
private ServletContext context;
public TimerTaskSelf(ServletContext context){
this.context = context;
}
@Override
public void run() {
System.out.println(DateUtils.format(DateUtils.currentDate(),"yyyy-MM-dd HH:mm:ss") + " web监听结合定时器应用每次执行2次的问题...");
}
}
本地tomcat-7.0.12启动, 定时器执行没问题。
部署到服务器,linux,启动tomcat后,每次执行的时候会重复2次执行任务.
解决方案:
服务器上项目部署在tomcat的webapps文件下面,conf下的server.xml里面又配置了一句<Context .../> 指向tomcat的webapps下的项目,这样启动的时候web.xml里面的定时监听执行了2次.就是上面 那位哥哥说的 "先在contextInitialized里打印一下看看你的listern进去了几次" ,这样的情况会进去2次.
Java Timer定时器时,每次重复执行了两次任务的解决方案的更多相关文章
- jquery 实现重复点击一个元素时不重复执行效果
jquery 实现重复点击一个元素时不重复执行效果 这需要用到jquery的stop方法 实例 停止当前正在运行的动画: $("#stop").click(function(){ ...
- JAVA Timer定时器使用方法(二)
JAVA Timer 定时器测试 MyTask.java:package com.timer; import java.text.SimpleDateFormat;import java.util. ...
- JAVA Timer定时器使用方法
JAVA Timer 定时器测试 MyTask.java:package com.timer; import java.text.SimpleDateFormat;import java.util. ...
- java Timer定时器管理类
1.java timer类,定时器类.启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定 ...
- JAVA TIMER定时器
备注:类实现ServletContextListener,在web.xml配置,之后服务启动该定时器类自动加载 package com.leadlt.common.util; import java. ...
- Java Timer 定时器的使用
设置定时任务很简单,用Timer类就搞定了. 一.延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行. 代码如下:package test;i ...
- JAVA Timer定时器使用方法(一)
设置定时任务很简单,用Timer类就搞定了. 一.延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行. 代码如下:package test;i ...
- Spring的quartz定时器同一时刻重复执行二次的问题解决
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...
- Java Timer定时器原理
做项目很多时候会用到定时任务,比如在深夜,流量较小的时候,做一些统计工作.早上定时发送邮件,更新数据库等.这里可以用Java的Timer或线程池实现.Timer可以实现,不过Timer存在一些问题.他 ...
随机推荐
- win10打开组策略提示命名空间已经被定义
http://www.xitongcity.com/jiaocheng/win10jc_content_3629.html 最近有win10系统用户升级到10532版本时,无法打开组策略,弹出提示“命 ...
- 编译原理-词法分析04-NFA & 代码实现
编译原理-词法分析04-NFA & 代码实现 0.术语 NFA 非确定性有穷自动机nondeterministic finite automation. ε-转换ε-transition 是无 ...
- Leetcode N-Queens II
Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...
- jQuery对数据和对象的操作
<script type="text/javascript" src="jquery-1.8.2.min.js"></script> & ...
- PHP两个文件的相对路径
/** * relativePath 计算两个文件的相对路径 * @param file1 参作为考路径 * @param file2 相对于$file1的路径 */ function relativ ...
- Java直接(堆外)内存使用详解
本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明: 相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明 希望对想使用直接内存的朋 ...
- Java实现验证码制作之一自己动手
以前弄验证码都是现找现用,下面是自己跟着敲代码弄好的,记录一下,分享给大家. 我这里用的是Servlet ,Servlet代码如下 import java.awt.Color;import java. ...
- AADC安装指南
可选功能中,”密码哈希同步“可以将本地域账号的密码默认每三小时同步到O365:”密码回写“则是反过来,但是世纪互联的答复是”此功能需要Auzre AD Service功能,目前国内版还不支持使用,国际 ...
- Mysql 数据库之常用命令[更新中...]
连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 例如:create database jtest; 显示所有数据库: s ...
- Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷. Ant是软件构建工具,Maven的定位是软件项目管理和理解工具. ...