- 浏览: 925169 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
要用Spring的scheduledTask了,
于是先在eclipse里做了小试验,试下.本来很简单的一个功能,不论是spring的文档还是网上都有可以参考的小例子, 但一试,发现有问题了.
一是配置的那个scheduledTask没有运行, 后来用一个很笨的方法运行了, 但时间明显不对.
下面是运行程序的main方法:
public static void main(String[] args) throws InterruptedException {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
int i=0;
while(i< 10) {
Thread.sleep(1000);
System.out.println("..."+i++);
}
if("run".equals(args[0])) {
System.out.println("timerFactory: "+context.getBean("timerFactory"));
}
}
那
个很笨的方法是通过启动参数来运行,也就是若以这样的方式(java -jar springScheduler.jar
run)来运行时,那个scheduledTask就可以起作用了. 若不加run,而以"java -jar
springScheduler.jar"来运行的话, scheduledTask就不起作用?
不应该呀!
下面是applicationContext.xml里的配置:
<bean id="checkEmail" class="spring.MyTimerTask"/>
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay" value="0" />
<property name="period" value="5" />
<property name="timerTask" ref="checkEmail" />
</bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<!-- see the example above -->
<ref bean="scheduledTask" />
</list>
</property>
<!--<property name="daemon" value="true"/>-->
</bean>
觉得原因是Spring在初始化context时没有初始化timerFactory,这样若不通过context来getBean
("timerFactory")的话, 这个实例就不会初始化,
总觉得不应该这样的.一般一个scheduledTask的运行用户是不会有干涉的,
所以也不必为了让这个timerFactory初始化而特意get下bean.
考虑到这个原因后<beans>的属性里加上了default-lazy-init="false",但还是不行, 如下所示:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
default-lazy-init="false">
这是为什么? 怎么解决? 从网上搜了很多这方面的材料但都没提到这个问题, 我为什么一到我这就出问题了呢?
再说第二个问题: 时间明显不对.
为了明显点, 我特意把每执行一次的时间改为5ms, 如下所示:
<property name="delay" value="0" />
<property name="period" value="5" />
这样不用等待就立即执行,但当用"java -jar springScheduler.jar run"方式启动后,运行的很慢,我的电脑不至于那么慢吧?
这里面又有什么隐情? 中邪了???
----------------------------------------------------------------------------
下载这里的jar包,可能运行"java -jar springScheduler.jar run"(或不带run参数)来试试.
- springScheduler.jar (2.6 MB)
- 下载次数: 20
评论
但别人怎么没遇到这个问题呢, 在网上也没搜到这方面的说明.
public static void main(String[] args) throws InterruptedException {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.getBean("timerFactory");
}
2- timer is legacy now,it's single-threaed, so if your task takes a long time to run, later ones will be delayed. try to use quartz or DelayedQueue in Java5 or other solutions.
发表评论
-
Java实现将源文件中的注释替换成空行。
2011-12-27 15:39 2797以Css文件为例, 为了能准确地定位,需要把段注释也要替换 ... -
JVM内存溢出问题分析排查
2011-10-25 10:27 3747内存溢出与数据库锁表的问题,可以 ... -
ant运行java程序时, 它不能加载指定properties文件, 怎么处理?
2011-07-27 17:47 3722运行时, 目录结构如下: . ... -
关于用多线程时任务分配与结果收集的问题的设计讨论
2011-07-27 10:47 2078假定任务是这样的: 对于给定字符串,如“threadTe ... -
File类createNewFile时的一个注意点
2010-11-03 17:42 26579今天体会到一个陷阱,刚开始还觉得是JDK的bug呢 ... -
要static还是不要static?
2010-09-25 14:18 1209内部接口声明加不加static没什么不同 附件Inn ... -
线程join方法的理解
2010-08-22 11:11 2437一个偶然机会,又接 ... -
should effort go into reuse above maintainability and extensibility?
2010-06-04 09:37 1306Master and Student Maste ... -
对接口编程的一些思考
2009-04-10 08:41 1258对一个问题的持续深追,又想起了Java中接口编 ... -
JVM创建一个新对象到底有多大的代价?
2009-04-02 09:54 1624好像是在听一人讲JVM性能调优方面事时, 知道 ... -
序列化(二): 为什么要序列化?
2009-03-20 08:25 1950在readResolve()方法与序列化中, 由r ... -
序列化(一): readResolve()方法与序列化
2009-03-17 10:08 3123在CJC(一) 中提到一个问题,即 readResolve方 ... -
Core Java: 继承覆盖时的一个问题
2009-02-23 21:01 1264看如下Java代码: public class Main { ... -
CoreJava: 父子类都需要实现同一个接口?
2009-02-18 16:16 2451前些写用LinkedHashSet带来的思考(http ... -
Spring中配置Qaurtz时的singlton问题
2008-11-23 17:24 1571上一篇中用TimerTask做了个简单的实验, ... -
在Java里不用Socket而直接操作远程计算机里的文件.
2008-06-25 18:27 2806今天上班时偶然发现在Java里可以在不用Socket情况下操作 ... -
about @SuppressWarnings.
2008-06-24 13:50 7679about @SuppressWarnings. ... -
<Java.JavaEE面试整理>(10) --"标签"接口,重载vs覆盖........
2008-04-04 15:46 2183Q 13: Java中为什么有些接口里并没有定义任何方法? L ... -
java.sql.Timestamp转为相应字符串的问题及解答
2008-04-01 14:28 2906工作中用到了java.sql.Timestamp这个类,先不说 ... -
"异常"的梦
2008-03-24 08:33 1327"不对呀,电子地图上 ...
相关推荐
`task:executor`则是Spring中用于处理异步任务的bean,它可以被`@Async`和`@Scheduled`注解的方法使用。配置`task:executor`可以定制线程池属性,如核心线程数、最大线程数、线程存活时间等。 5. **测试说明** 在...
这个名为"spring-boot-scheduled-task.zip"的压缩包很可能包含了一个完整的Spring Boot项目,用于演示或实践如何配置和使用Spring Boot的定时任务功能。在这个项目中,我们可以预期看到以下几个关键知识点: 1. **...
Spring Task提供了两种主要的方式来创建定时任务:`@Scheduled`注解和`TaskScheduler`接口。`@Scheduled`注解可以用于方法上,用于声明一个定时任务,而`TaskScheduler`接口则允许自定义任务调度逻辑。 ```java // ...
在Java开发中,Spring框架是不可或缺的一部分,尤其在企业级应用中,它的各种特性使得开发者能够构建健壮、可维护的系统。其中,Spring的定时任务功能是许多项目中的重要组成部分,它允许开发者安排和执行周期性的...
需要注意的是,定时任务方法不能有返回值,否则Spring会在启动时抛出异常。 #### 四、常见问题及注意事项 **4.1 方法无返回值** 如前文所述,定时任务方法不能有返回值。如果需要返回值,则需要设置代理模式为...
这个文档应该详细介绍了每个步骤,包括如何在Spring环境中注册和启动定时任务,如何编写带有`@Scheduled`注解的方法,以及如何编写测试用例来验证定时任务的正确性。 6. **应用实践**: Spring的定时任务功能在...
在Spring中,我们可以使用Spring的TaskExecution和TaskScheduling模块来实现定时任务,这些功能通常依赖于特定的jar包。以下是对标题和描述中涉及的知识点的详细解释: 1. **Spring Task模块**:这是Spring提供的一...
2. **编写定时任务类**:在Java源码目录下创建一个定时任务类,例如`ScheduledTask.java`,并使用`@Component`注解标记为Spring Bean。然后使用`@Scheduled`注解来定义任务的执行周期,如`cron`表达式控制执行频率。...
在Java开发领域,Spring Boot框架以其便捷的特性深受开发者喜爱,而Spring Boot集成的Scheduled功能则为开发者提供了定时任务调度的能力。本篇文章将详细介绍如何在IDEA中利用Spring Boot的Scheduled来实现任务调度...
对于不使用Java配置的情况,可以在Spring的XML配置文件中定义一个`<task:scheduled-tasks>`元素,然后在其内部配置多个`<task:scheduled>`元素来定义定时任务。 ```xml <beans xmlns="http://...
- **Spring Task**:内置的定时任务框架,可以使用@Scheduled注解或TaskScheduler接口实现。 11. **WebSocket支持**: - **WebSocket API**:Spring提供WebSocket服务器端和客户端的实现,支持STOMP协议。 12. *...
<task:scheduled ref="scheduledTasks" method="reportCurrentTime" fixed-rate="5000"/> </task:scheduled-tasks> <bean id="scheduledTasks" class="com.example.ScheduledTasks"/> ``` 这里,`ref`属性指定...
在Spring框架中,定时任务是通过`@Scheduled`注解实现的,该注解提供了灵活的方式来安排任务在特定时间执行。下面将详细讲解如何配置和使用`@Scheduled`,以及其相关的cron表达式。 首先,要启用Spring的定时任务...
1. **基于XML配置**:这通常涉及在配置文件(如`spring-quartz-task.xml`)中定义`<task:scheduled-tasks>`和`<task:scheduled>`元素。例如,你可以为一个方法指定cron表达式,这个方法将在指定的时间间隔内自动执行...
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...
在 IT 领域,任务调度是不可或缺的一部分,特别是在企业级应用中,它允许系统自动执行计划的任务,如数据同步、报表生成等。本篇文章将深入探讨如何在 Spring Boot 应用中使用 Spring 的 TaskScheduler 实现编程式...
在Java开发领域,Spring框架是不可或缺的一部分,它提供了一种强大的、灵活的方式来组织和管理应用程序。在Spring中,定时任务的实现通常通过Spring Task模块,也就是我们常说的Spring定时器。这个实例将深入探讨...
6. **任务调度与执行**:Spring的Task模块支持定时任务和后台任务的执行,如使用@Scheduled注解进行定时任务的定义。 7. **测试支持**:Spring提供了一套完整的测试框架,包括单元测试、集成测试和端到端测试,支持...
在Spring框架中,定时任务是应用中不可或缺的一部分,它允许我们按照预定的时间间隔执行特定的任务。本篇文章将详细探讨如何使用Spring的注解来实现定时任务,以及在实际开发中的应用。 首先,我们要引入Spring的...