关于Java Web 使用Java的TimerTask, 触发定时器(执行某些任务)的实例
来源:互联网 发布:英美留学对比 知乎 编辑:程序博客网 时间:2024/05/18 01:31
import java.util.TimerTask;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;
public class MainAction implements ServletContextListener {
/** * 上下文监听器,需要在web.xml中进行配置,<listener>packageAddress.Class</listener> * Create by 2017/08/17 * * @author Jmlc *///现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处,写一个timertask的子类即可(timertask就是实现了runnable接口)。private Timer timer = null;//(获取容器的实例)servlet 会有几个周期,当你启动服务时,发出请求调用某个servlet时,就会对该Servlet进行初始化,即init方法,// 然后开始处理请求,在这当中就出现一个servletContext,这个是一个暂时存放数据的地方,上下文关系。通过getServletContext方法得到。private ServletContext context = null;//第一步:上下文初始化(init)public void contextInitialized(ServletContextEvent event) { this.context = event.getServletContext(); timer = new Timer(true); event.getServletContext().log("定时器已启动......"); //第一个参数是要操作的方法,第二个参数是要设定延迟的时间(0表示即刻执行),第三个参数是周期的设定,每隔多长时间执行该操作(每5秒执行一次)。 timer.schedule(new TimingTasks(this.context), 0, 5 * 1000); event.getServletContext().log("已执行邮件发送任务......");}//第?步:上下文销毁public void contextDestroyed(ServletContextEvent event) { timer.cancel(); this.context.log("定时器销毁......"); this.context = null;}//定时任务(邮件发送任务)private static class TimingTasks extends TimerTask { private static boolean isRunning = false; private ServletContext context = null; public TimingTasks(ServletContext context) { this.context = context; } //下面的方法会按之前设定的每5秒执行一次,所以,此处不需要循环 int number = 1;//记录执行次数,默认1次 public void run() { if (!isRunning) { isRunning = true; context.log("开始执行指定任务......"); int i = 0; while (i++ < 2) { context.log("已完成任务的" + i + "/" + 2); } isRunning = false; context.log("指定任务执行结束......"); context.log("已指定完成任务,第" + number++ + "次。"); } else { context.log("上一次任务执行还未结束......"); } } }
}
<!--(...的任务).监听器--><listener> <listener-class>com.jandar.frame.system.web.MainAction</listener-class></listener>
上述:<listener-class>包路径.Class类</listener-class>即可(相当于配置找到你需要执行任务的类(Class))。
阅读全文
0 0
- 关于Java Web 使用Java的TimerTask, 触发定时器(执行某些任务)的实例
- 关于Java Web 使用Spring中使用Quartz(定时调用、实现固定时间执行), 触发定时器(执行某些任务)的实例
- Java定时器Timer和TimerTask的使用
- Java 任务 Timer,TimerTask 的使用
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 定时器的使用:每天定时执行任务
- Java 定时器的使用:每天定时执行任务
- Java 定时器的使用:每天定时执行任务
- Java 定时器的使用:每天定时执行任务
- Java 定时器的使用:每天定时执行任务
- Java定时器周期执行任务的例子
- Canvas&Paint[]Canvas:Matrix、Clip、Save&Restore
- asp.net apk文件不能直接下载的解决方法
- Gym
- 简单Python决策树可视化实例
- 体验一个全新的RTOS-QNX系统功能介绍
- 关于Java Web 使用Java的TimerTask, 触发定时器(执行某些任务)的实例
- Android Ordered Broadcast 有序广播
- Nginx 常用负载均衡配置方式
- NS3基本知识
- idea中添加SVN路径
- eclipse安装svn插件
- HDU 6080 度度熊保护村庄(计算几何+最小环-Floyd)
- Java程序通过代理访问网络
- 验证哥德巴赫猜想