博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Timer 和 TimerTask 例子
阅读量:5986 次
发布时间:2019-06-20

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

启动Timer的容器类:

 

‍public class TMServlet extends HttpServlet {

/**

* @category 初始化方法,通过此方法配置定时启动属性,以及启动服务
*/
public void init(ServletConfig context) throws ServletException {
   super.init(context);
   // 扫描周期,以毫秒计,为20分钟
   //long scanPeriod = 1200000l;
   long scanPeriod = 60000l;
   try {
    // 启动服务
    new Timer().schedule(
      new TMServiceTask(context.getServletContext()), 0, scanPeriod);
   } catch (RuntimeException e) {
    e.printStackTrace();
    log.error(e);
   }
}

}

TimerTask的执行类:

 

‍public class TMServiceTask extends TimerTask {

private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");

public TMServiceTask(ServletContext servletContext) {}

@Override

public void run() {
   System.out.println(sdf.format(new Date()));
   System.out.println("启动");
   try {

    // ‍要做的操作

     System.out.println("推数结束");
   } catch (RuntimeException e) {
    throw e;
   }
}
}

==========================

补充:weblogic下,使用console来启停服务时,可能导致前一个servlet没有完全停止的情况下启动了一个新的servlet,从而启动多个timer、运行多个定时任务的线程。如果没有实现做线程安全的控制,这种情况会导致严重的数据同步问题。

建议使用spring的schedule-job。至少目前来看没有定时任务不能关闭的问题。

本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/798987,如需转载请自行联系原作者

你可能感兴趣的文章
部署 dubbo + zookeeper
查看>>
sql重写后比较是否一致
查看>>
python模块pymysql
查看>>
IOS UIScrollView详解 & 图片缩放功能
查看>>
正确计算linux系统内存使用率
查看>>
CentOS7同步远程yum源到本地
查看>>
域名服务器配置文件 /etc/resolv.conf
查看>>
What is Keepalived ?
查看>>
.on()的学习心得
查看>>
sqlserver 计算数据库时间差
查看>>
我的.Bashrc配置文件
查看>>
求图的最小生成树
查看>>
11.1time模块
查看>>
TSQL语句练习题
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 访问记录功能改进
查看>>
硬盘基本知识(一)
查看>>
linux--DNS解析
查看>>
第一章 Java EE 概述
查看>>
CSS的选择器
查看>>
linux文件属性
查看>>