- 浏览: 1228943 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
1定时器的作用 在实际的开发中,如果项目中需要定时执行或者需要重复执行一定的工作,定时器显现的尤为重要。 当然如果我们不了解定时器就会用线程去实现,例如: package org.lzstone.action public class FinanceAction extends Thread{ private Date date; public void run{ try{ while(true){ Thread.sleep((int)(Math.random()*1000)); date = new Date(); //定时执行任务 } }catch(Exception e){ e.printStackTrace(); } } } 自己实现定时器的工作很复杂,如果实现不好占用内存过多,系统就此Over,所以处理定时执行或者重复执行的任务,定时器是很好的选择 2.java中常见的定时器 1)借助Java.util.Timer来实现 2)OpenSymphony社区提供的Quartz来实现 3.介绍Timer 利用Timer开发定时任务是主要分为两个步骤: 1)创建定时任务类 示例代码: package org.lzstone.action import java.util.TimeTask public class LzstoneTimeTask extends TimeTask{ public void run(){ //执行的定时器任务 } } 2)运行定时任务,运行定时任务分为两种方式: 2.1)程序直接启动 示例代码: package org.lzstone.action public class LzstoneMain{ ....... public void run(){ //执行定时器的任务 //创建实例 Timer timer = new Timer(); 参数: new LzstoneTimeTask()- 所要安排的任务。 0- 执行任务前的延迟时间,单位是毫秒。 1*1000- 执行各后续任务之间的时间间隔,单位是毫秒。 timer.schedule(new LzstoneTimeTask(),0,1*1000); } } 2.2)web监听方式 示例代码: package org.lzstone.action public class LzstoneMain implements ServletContextListener{ private Timer timer = null; //初始化监听器,创建实例,执行任务 public void contextInitialized(ServletContextEvent event){ timer = new Timer(); timer.schedule(new LzstoneTimeTask(),0,1*1000); } //销毁监听器,停止执行任务 public void contextDestroyed(ServletContextEvent event){ //注意,在此计时器调用的计时器任务的 run 方法内调用此方法,就可以绝对确保正在执行的任务是此计时器所执行的最后一个任务。 timer.cancel(); } } web.xml配置 <listener> <listener-class> org.lzstone.action.LzstoneMain </listener-class> </listener> 4. 介绍Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,可以用来创建简单或者复杂的定时任务,利用Quartz开发定时任务的步骤与Timer类 似。 利用Quartz开发定时任务是主要分为两个步骤: 1)创建定时任务类 示例代码: package org.lzstone.action public class LzstoneTimeTask implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException{ //执行的定时器任务 } } 2)运行定时任务,运行定时任务分为两种方式: 2.1)程序直接启动,创建任务调度器及配置相应的任务计划 示例代码: package org.lzstone.action public class LzstoneMain{ private static Scheduler sched; public static void run() throws Exception{ //创建LzstoneTimeTask的定时任务 JobDetail jobDetail = new JobDetail("lzstoneJob",sched.DEFAULT_GROUP,LzstoneTimeTask.class); //目标 创建任务计划 CronTrigger trigger = new CronTrigger("lzstoneTrigger","lzstone","0 0 12 * * ?"); //0 0 12 * * ? 代表每天的中午12点触发 sched = new org.quartz.impl.StdSchedulerFactory().getScheduler(); sched.scheduleJob(jobDetail,trigger); sched.start(); } //停止 public static void stop() throws Exception{ sched.shutdown(); } } //执行 public class Main{ ............. public void run(){ LzstoneMain.run(); } ............ } 2.2)web监听方式 示例代码: package org.lzstone.action public class LzstoneMainListener implements ServletContextListener{ private Timer timer = null; //初始化监听器,创建实例,执行任务 public void contextInitialized(ServletContextEvent event){ LzstoneMain.run(); } //销毁监听器,停止执行任务 public void contextDestroyed(ServletContextEvent event){ LzstoneMain.stop(); } } web.xml配置 <listener> <listener-class> org.lzstone.action.LzstoneMainListener </listener-class> </listener> 5.对比 Timer方式实现定时器,原理简单,实现方便,在执行简单的任务比较方便,不足之处是无法确定执行时间,并且依赖性比较强,必须继承指定的类 Quartz方式实现定时器,方便,清晰指定启动时间,定时参数比较灵活,容易实现比较复杂的定时任务,不足之处是需要实现特定接口,加载其框架 两种方式各有优缺点,在特定场合可以根据其特点选择使用。 6.Spring定时任务 Spring定时任务对Timer与Quartz都提供了支持,并且实现步骤基本一样 首先配置Spring对Timer的支持 1.1 创建定时任务类 package org.lzstone.action import java.util.TimeTask public class LzstoneTimeTask extends TimeTask{ public void run(){ //执行的定时器任务 } } 1.2 注册定时任务类,配置任务计划与任务调度器 在项目的WEB-INF下面创建TimerConfig.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> <!--注册定时执行任务实体--> <bean id="lzstoneTimeTask" class="org.lzstone.action.LzstoneTimeTask"/> <!--注册定时器信息--> <bean id="taskInfo" class="org.springframework.scheduling.timer.ScheduledTimerTask"> <!--第一次执行任务前需要等待的时间,这里设置为3秒--> <property name="delay"> <value>3000</value> </property> <!--设置任务的执行周期 这里设置为4秒--> <property name="period"> <value>4000</value> </property> <!--设置具体执行的任务 这里设置为lzstoneTimeTask--> <property name="timerTask"> <ref local="lzstoneTimeTask"/> </property> </bean> <!--配置定时器任务的调度器--> <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean"> <!--注册定时器列表--> <property name="scheduledTimerTasks"> <list> <ref local="taskInfo"/> ........ </list> </property> </bean> </beans> 1.3 web项目中的启动设置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/TimerConfig.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> 配置Spring对Quartz的支持 2.1 创建定时任务类 package org.lzstone.action public class LzstoneQuartzTask{ public void execute(){ //执行的定时器任务 } } 2.2 注册定时任务类,配置任务计划与任务调度器 在项目的WEB-INF下面创建QuartzConfig.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> <!--注册定时执行任务实体--> <bean id="lzstoneQuartzTask" class="org.lzstone.action.LzstoneQuartzTask"/> <!--注册定时器信息--> <bean id="taskInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!--指定要执行的定时任务类 这里是LzstoneQuartzTask--> <property name="targetObject"> <ref local="lzstoneQuartzTask"/> </property> <!--指定定时器任务类要执行的方法名称 这里是execute--> <property name="targetMethod"> <value>execute</value> </property> </bean> <!--配置定时器任务的调度器--> <bean id="quartzTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!--声明要运行的实体--> <property name="jobDetail"> <ref local="taskInfo"/> </property> <!--设置运行时间--> <property name="cronExpression"> <value>0 0 12 * * ?</value> </property> </bean> <!--注册监听器--> <bean id="registerQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!--注册定时器实体 集合--> <property name="triggers"> <list> <ref local="quartzTrigger"/> </list> </property> </bean> </beans> 2.3 web项目中的启动设置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/QuartzConfig.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
发表评论
-
JAVA短信发送及JAVA发送http请求与处理
2016-06-22 14:34 605JAVA发送HTTP请求与处理参考: http://ww ... -
Java Zip应用
2016-06-22 14:30 642应用系统中使用jdk原生 ... -
模拟tomcat进行http请求及响应处理:BufferedReader类的readLine在socket网络编程应用时发生阻塞
2016-05-11 15:04 1762最近写一个简单的程序模拟tomcat进行http请求及响应 ... -
Castor-xml映射出现节点重复问题解决
2015-08-13 16:24 1210最近在使用Castor-xml生成XML时发现生成的格式不 ... -
Add directory entries问题
2014-08-05 10:24 1897用spring注解的项目,eclipse可以运行,打成jar ... -
BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
2013-01-25 16:21 885http://www.cnblogs.com/fayf/ar ... -
java.net.BindException: Cannot assign requested address
2012-06-13 14:10 893转:http://wgkgood.blog.51cto ... -
Duplicate name in Manifest: Depends-On
2012-06-13 13:13 1644解决方法:http://ww2.sjc.edu/faculty ... -
java tree
2011-11-16 02:01 1292import java.util.ArrayList; im ... -
jacob操作word和excel
2011-07-28 17:00 905http://danadler.com/jacob/ -
获得PrepareStatement 的最终执行语句
2011-07-04 10:07 1017方法一:http://www.blogjava.net/ ... -
Non-terminating decimal expansion; no exact representable decimal result
2011-06-24 16:03 2611由于需要处理精度比较高的浮点数,所以弃用double类型,改用 ... -
JXLS应用示例
2011-06-03 01:41 3495JXLS在循环的记录前加序号: <jx:f ... -
月份加减方法处理
2011-06-03 00:52 920private static String monthAdd ... -
JAVA 5.0 后 自带监控工具 jps、jinfo、jstat、jma
2011-05-12 16:25 1241最近有个客户要进行WebLogic性能调优,但因为他们没有性能 ... -
ClientAbortException,Connection reset by peer: socket write error
2011-03-07 11:24 6104extremetable导出excel,弹出一个下载窗口,这 ... -
java 调ireport (javaBean数据源)保存服务器 生成word
2011-02-24 14:40 1561package com.ztesoft.bidding.con ... -
JAVA包生成EXE应用实例
2011-01-06 15:35 1035相关文章:http://blog.csdn.net/fresh ... -
RMI客户端调用远程服务器方法-远程方法调用
2010-12-27 16:45 2750RMI软件下载:http://www.genady.net/r ... -
JAVA jar打包时MANIFEST.MF格式约定
2010-12-10 11:12 2227Manifest-Version: 1.0 Created-B ...
相关推荐
在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...
Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...
在Spring框架中,有两种主要的方法来实现定时任务:Spring自带的`@Scheduled`注解和引入第三方库Quartz。这两种方法都可以帮助开发者在特定的时间点执行任务,为应用程序添加计划任务的能力。 首先,我们来看看使用...
本工程用于研究如何在Spring框架中采用XML配置的方式实现Spring定时器的功能 本工程编码方式:UTF-8 参考博客:http://blog.csdn.net/gaohuanjie/article/details/43563245
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在应用程序中安排周期性任务的执行。这个功能基于Java的`java.util.concurrent.ScheduledExecutorService`,并通过Spring...
下面将详细介绍如何在Spring中集成Java定时器,并探讨相关的知识点。 首先,Java定时器主要由`java.util.Timer`类和`java.util.TimerTask`类组成。`Timer`类是定时器,用于调度任务的执行,而`TimerTask`是可被调度...
首先,我们来看Spring定时器。Spring使用的是Quartz库来实现定时任务管理。在给出的例子中,可以看到配置文件中定义了几个关键的bean: 1. `zhang`:这是被调度的任务bean,它包含了实际执行定时任务的方法。在这个...
在标题"spring定时器的包和配置文件"中,我们讨论的核心是Spring如何配置和使用定时器来自动化执行特定的任务。 首先,让我们了解Spring定时任务的基本概念。Spring定时器基于Java的`java.util.Timer`和`java.util....
在IT领域,特别是Java开发中,Spring框架因其强大的功能和灵活性而备受青睐。其中,Spring提供的定时任务功能,使得开发者能够在应用中轻松...希望本文能帮助你在项目中灵活运用Spring定时器,提高开发效率和应用性能。
本文旨在深入解析Spring定时器的时间配置规则,并通过具体的代码示例进行演示。 #### Cron表达式的构成 Cron表达式由六个或七个空格分隔的时间元素组成,这些元素分别代表: 1. **秒** (0–59) 2. **分钟** (0–59...
Spring 框架是 Java 开发中的核心组件之一,它提供了丰富的功能,包括但不限于依赖注入、面向切面编程以及各种企业级服务。在本篇中,我们将深入探讨如何在 Spring 框架中实现定时任务功能,特别是使用 Spring MVC ...
本篇将详细介绍如何在Spring中配置定时器,并通过一个实际的Demo来加深理解。 一、Spring定时任务概述 Spring提供了两种主要的定时任务实现方式:`TaskScheduler`和`TaskExecutor`,以及基于Quartz的`Spring...
Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何...
代码中包含了两个主要部分:一个是纯Java实现的`MyTimer`类,另一个是Spring配置文件中的定时任务定义。 ##### MyTimer 类分析 ```java package com.test; public class MyTimer { public static void main...
Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。而Spring...
标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...
通过这样的配置,你就可以在ESSH项目中集成Spring的定时任务功能,实现对后台任务的定时调度。在实际项目中,你可以根据需求调整定时策略,比如基于cron表达式来更复杂地控制任务执行时间,或者通过调整线程池参数来...
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。