当前位置: 首页 > news >正文

JAVA实用技巧:定时执行任务的三种方法

转自:http://blog.csdn.net/Senton/archive/2007/11/06/1870501.aspx

1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须实现TimerTask里面的run()方法。

2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入启动Timer的代码,在contextDestroyed
方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
< listener>
< listener-class>com.qq.customer.ListByDayListener< /listener-class>
< /listener>

3)org.springframework.scheduling.timer.ScheduledTimerTask
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

< beans>
< bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
< property name="scheduledTimerTasks">
< list>
< ref local="MyTimeTask1"/>
< /list>
< /property>
< /bean>

< bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>

< bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
< property name="timerTask">
< ref bean="MyTimeTask"/>
< /property>
< property name="delay">
< value>10000< /value>
< /property>
< property name="period">
< value>86400000< /value>
< /property>
< /bean>
< /beans>

 

相关文章:

  • Java中的克隆(Clone)机制
  • Java读取Properties文件的六种方法
  • java序列化机制与原理
  • Eclipse-debug时常用的快捷键
  • java序列化原则
  • 网站统计中的数据收集原理及实现
  • Java枚举类型enum的原理
  • CentOS(七)--Linux文件类型及目录配置
  • Java枚举类型enum的使用原理
  • DateUtil
  • 深入研究java.lang.Class类
  • 候捷谈Java反射机制
  • Codeforces Beta Round #51 D. Beautiful numbers 数位dp
  • java的RTTI
  • (转)memcache、redis缓存
  • [PHP内核探索]PHP中的哈希表
  • JS 中的深拷贝与浅拷贝
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • iOS 颜色设置看我就够了
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java深入 - 深入理解Java集合
  • Js基础知识(四) - js运行原理与机制
  • JWT究竟是什么呢?
  • 分布式任务队列Celery
  • 你不可错过的前端面试题(一)
  • 普通函数和构造函数的区别
  • 七牛云假注销小指南
  • 如何利用MongoDB打造TOP榜小程序
  • 山寨一个 Promise
  • 设计模式(12)迭代器模式(讲解+应用)
  • 手机端车牌号码键盘的vue组件
  • 小程序 setData 学问多
  • 正则表达式小结
  • # Apache SeaTunnel 究竟是什么?
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (4)STL算法之比较
  • (day 12)JavaScript学习笔记(数组3)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (八)Spring源码解析:Spring MVC
  • (编译到47%失败)to be deleted
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (蓝桥杯每日一题)love
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)JAVA中的堆栈
  • (转)linux下的时间函数使用
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ***原理与防范
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net IOC框架入门之一 Unity
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 回调、接口回调、 委托
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • /bin/rm: 参数列表过长"的解决办法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?