- 浏览: 217426 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
IXHONG:
registerBeanPostProcessors(bean ...
AbstractApplicationContext的refresh()方法简要说明 -
java_frog:
可以读汉字,但一行还是分开了。
FileChannel 读取中文文件解决乱码的一种方法 -
shenselongge:
引用
FileChannel 读取中文文件解决乱码的一种方法 -
string2020:
refresh到底是干啥的。@SpringBootApplic ...
AbstractApplicationContext的refresh()方法简要说明 -
dongpy1111:
最近使用String.format比较多。不晓得这个效率怎样。 ...
String vs StringBuffer vs StringBuilder
java的源码为我们提供了一些基础的实现:如Timer类和TimerTask类。
java实现定时任务的方法有一下三种(当然还有很多开源的定时任务框架)。
1)java.util.Timer. 2)ServletContextListener. 3)org.springframework.scheduling.timer.ScheduledTimerTask 1)java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务: Timer timer=new Timer(); timer.schedule(new ListByDayTimerTask(),10000,86400000); 这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。 2)ServletContextListener 这个方法在web容器环境比较方便,这样,在web server启动后就可以 自动运行该任务,不需要手工操作。 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>
下面这个例子是自己结合网上的例子实现的,也就是用第二种方法。怎样利用mvn创建一个web工程,见我的上一篇文章。
1.定时器类
package com.amuse.timer; import java.util.Timer; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * 类TimerContextListener.java的实现描述:TimerContextListener.java * <p> * 实现了ServletContextListener,这样就不用手工启动定时器了,容器启动的时候,定时器就启动了 * * @author yongchun.chengyc 2012-3-14 下午1:27:00 */ public class TimerContextListener implements ServletContextListener { /** 定义一个定时器类 */ private Timer timer = null; /* * (non-Javadoc) * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */ @Override public void contextDestroyed(ServletContextEvent event) { timer.cancel(); event.getServletContext().log("定时器取消"); } /* * (non-Javadoc) * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent) */ @Override public void contextInitialized(ServletContextEvent event) { event.getServletContext().log("已启动定时器"); timer = new Timer(true); MyTask task = new MyTask(event.getServletContext()); // 每十秒执行一下任务 timer.schedule(task, 0, 10 * 1000); event.getServletContext().log("已添加任务调度表"); } }
2.任务类
package com.amuse.timer; import java.util.TimerTask; import javax.servlet.ServletContext; /** * 类MyTask.java的实现描述:MyTask.java * <p> * 继承TimerTask,实现它的run方法 * * @author yongchun.chengyc 2012-3-14 下午1:36:29 */ public class MyTask extends TimerTask { /** 定义一个ServltContext */ private ServletContext context = null; public MyTask(ServletContext context){ this.context = context; } /* * (non-Javadoc) * @see java.util.TimerTask#run() */ @Override public void run() { context.log("开始执行任务"); int i = 0; while (i++ < 10) { System.out.println("已完成任务的" + i + "/" + 10); try { // 为了看得明白点,这里没完成一次输出睡眠5秒 new Thread().sleep(5 * 1000); } catch (InterruptedException e) { context.log(e.getMessage()); } } context.log("任务执行结束"); } }
3.在web.xml文件里配置
<web-app> <display-name>Archetype Created Web Application</display-name> <listener> <listener-class>com.amuse.timer.TimerContextListener</listener-class> </listener> </web-app>
4.运行mvn jetty:run
5.输出结果为:
2012-03-14 14:53:12.685:/timer:INFO: 已启动定时器 2012-03-14 14:53:12.685:/timer:INFO: 已添加任务调度表 2012-03-14 14:53:12.685:/timer:INFO: 开始执行任务 已完成任务的1/10 2012-03-14 14:53:12.722::INFO: Started SelectChannelConnector@0.0.0.0:8080 [INFO] Started Jetty Server [INFO] Starting scanner at interval of 10 seconds. 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:54:02.536:/timer:INFO: 任务执行结束 2012-03-14 14:54:02.537:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:54:52.290:/timer:INFO: 任务执行结束 2012-03-14 14:54:52.291:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:55:42.140:/timer:INFO: 任务执行结束 2012-03-14 14:55:42.141:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:56:32.990:/timer:INFO: 任务执行结束 2012-03-14 14:56:32.991:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:57:22.840:/timer:INFO: 任务执行结束 2012-03-14 14:57:22.841:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10 2012-03-14 14:58:12.690:/timer:INFO: 任务执行结束 2012-03-14 14:58:12.691:/timer:INFO: 开始执行任务 已完成任务的1/10 已完成任务的2/10 已完成任务的3/10 已完成任务的4/10 已完成任务的5/10 已完成任务的6/10 已完成任务的7/10 已完成任务的8/10 已完成任务的9/10 已完成任务的10/10
Timer--->schedule() ---->Task---run().任务就是像这样的
发表评论
-
方法retry的编写实践版
2014-03-21 15:13 790package com.snda.sysdev.virtua ... -
Http各种状态
2014-03-21 12:21 1019package org.apache.http; pu ... -
java正则简单用列
2014-02-11 23:23 837package com.simple.example; ... -
多线程下生成UUID
2014-01-21 12:10 9695这个实例是验证多线程下使用java.util.UUID生成 ... -
java的log框架全介绍
2013-11-22 17:00 35251.本篇不是什么? 不会告诉你应用系统为什么要引入日志框 ... -
Integer的“==”返回值
2013-10-26 16:06 1023/** * Created by spring o ... -
IP转整数以及整数转IP
2013-09-25 11:30 914IP转整数以及整数转IP,代码见 -
maven编译文件的编码设置
2013-09-25 11:28 977mavan编译时设置编码,配置见 -
Http的状态码及状态码的类型
2013-08-27 19:45 7777Http的状态码以及根据这些状态码分成5种类型 statu ... -
AbstractApplicationContext的refresh()方法简要说明
2013-04-03 00:20 10892public void refresh() throws B ... -
spring学习系列--what is the spring ioc container
2013-04-02 22:15 111.Combining ... -
FileChannel 读取中文文件解决乱码的一种方法
2013-02-06 15:41 7990package com.lp.liuan; impo ... -
ibatis的动态sql传参语法
2013-02-05 13:34 1731<isNotNull prepend="a ... -
javax.mail编写邮件的接受/转发/发送的指导文章
2013-02-03 17:20 995http://www.open-open.com/doc/vi ... -
ibatis+oracle批处理无法拿到影响的记录数
2012-10-26 19:27 1125Ibatis的SqlExecutor类里: publ ... -
ava.util.concurrent源码学习系列--volatile语义
2012-09-24 00:00 1123volatile语义:告诉处理器,不要到工作内存中找我,而是直 ... -
java.util.concurrent源码学习系列--Executor
2012-09-23 14:35 3034Executor的系列类图如下:这一些了类或接口都是和任务提交 ... -
获取spring的ApplicationContext的两种方法
2012-09-18 10:21 14921.第一种: ApplicationContext ap ... -
java.lang.class学习2--获取构造方法的过程,
2012-09-18 09:28 1108private Constructor<T ... -
改变线程上下文的类加载器ClassLoader
2012-09-17 17:30 1523/** * Override the thread ...
相关推荐
Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...
Java定时任务的实现是软件开发中常见的需求,用于在特定时间执行特定的业务逻辑,例如数据备份、报表生成等。本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...
Java定时任务是编程中常见的一种需求,用于在特定时间或间隔执行特定的代码逻辑。在这个“java定时任务小例子”中,我们可以看到两个关键文件:`TimerTest.java`和`DoTask.java`,它们分别代表了定时器的任务调度和...
Java定时任务是软件开发中一个不可或缺的特性,它允许程序在特定时间执行预定的任务,而无需用户干预。在Java世界里,实现定时任务的方式多种多样,包括但不限于使用Java内置的`java.util.Timer`和`java.util....
Java定时任务管理框架是开发中常见的一种工具,用于在特定时间执行特定任务,极大地提高了工作效率。Citic Scheduler作为这样一个框架,旨在简化Java项目中的定时任务管理。它提供了一个直观的用户界面,允许开发者...
Java定时任务是软件开发中的一个重要组成部分,特别是在服务端应用程序中,常常需要在特定时间执行某些操作,例如数据备份、清理过期数据、发送通知等。SpringBoot框架为开发者提供了便捷的方式来实现这些定时任务,...
Java定时任务是Java编程中一个重要的特性,它允许开发者安排任务在特定的时间点或周期性地执行。在Java中,我们可以使用内置的`java.util.Timer`类和`java.util.concurrent.ScheduledExecutorService`来实现定时任务...
Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...
Java定时任务调度是Java开发中一个非常重要的技术领域,它允许开发者在特定的时间点或按照预定义的周期执行任务,从而实现自动化的工作流程。在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util...
用java写的任务定时器,设置想设的时间,选择可执行文件或者txt,word,时间一到便会自动运行。现在有源码。
Java定时任务及其在工作流系统中的应用 Java定时任务是指在Java平台上执行定时任务的机制,以满足工作流系统中的需求。在工作流系统中,定时任务可以用于发送工作到期提醒邮件、自动执行任务、监控系统状态等。 ...
Java定时任务调度是Java应用程序中常见的一种功能,用于在特定时间执行特定任务,例如定期备份、数据清理等。`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入...
### Java定时任务实现方法:Quartz API 的应用与实践 #### 一、Quartz API简介 Quartz 是一个开源项目,提供了丰富的调度功能,适用于各种Java应用中的定时任务需求。它由Michael Lipton(mwlipton@us.ibm.com)等...