相信做软件的朋友都有这样的经历,我的软件是不是少了点什么东西呢?比如定时任务啊, 字串3
就拿新闻发布系统来说,如果新闻的数据更新太快,势必涉及一个问题,这些新闻不能由人工的去发布,应该让系统自己发布,这就需要用到定时定制任务了,以前定制任务无非就是设计一个Thread,并且设置运行时间片,让它到了那个时间执行一次,就ok了,让系统启动的时候启动它,想来也够简单的。不过有了 spring,我想这事情就更简单了。 字串3
看看spring的配置文件,想来就只有这个配置文件了
字串9
xml 代码
- < bean id = "infoCenterAutoBuildTask"
- class = "com.teesoo.teanet.scheduling.InfoCenterAutoBuildTask" >
- < property name = "baseService" ref = "baseService" />
- < property name = "htmlCreator" ref = "htmlCreator" />
- </ bean >
- < bean id = "scheduledTask"
- class = "org.springframework.scheduling.timer.ScheduledTimerTask" >
- <!-- wait 10 seconds before starting repeated execution -->
- < property name = "delay" value = "10000" />
- <!-- run every 50 seconds -->
- < property name = "period" value = "1000000" />
- < property name = "timerTask" ref = "infoCenterAutoBuildTask" />
- </ bean >
- < bean id = "timerFactory" class = "org.springframework.scheduling.timer.TimerFactoryBean" >
- < property name = "scheduledTimerTasks" >
- < list >
- <!-- see the example above -->
- < ref bean = "scheduledTask" />
- </ list >
- </ property >
- </ bean >
上面三个配置文件中只有一个配置文件是涉及到您自己的class的,其他的都是spring的类。很简单吧
字串1
我们只需要涉及一个class让他继承java.util.TimerTask;
字串2
java 代码- BaseTask extends java.util.TimerTask {
- //用户只需要实现这个方面,把自己的任务放到这里
- public void run(){
- }
- }
字串2
字串5
字串2
字串8
下面让我们来看看 spring的源代码 字串7
java 代码- /*
- * Copyright 2002-2005 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.springframework.scheduling.timer;
- import java.util.TimerTask;
- /**
- * JavaBean that describes a scheduled TimerTask, consisting of
- * the TimerTask itself (or a Runnable to create a TimerTask for)
- * and a delay plus period. Period needs to be specified;
- * there is no point in a default for it.
- *
- *
The JDK Timer does not offer more sophisticated scheduling 字串2
- * options such as cron expressions. Consider using Quartz for
- * such advanced needs.
- *
- *
Note that Timer uses a TimerTask instance that is shared
字串8 - * between repeated executions, in contrast to Quartz which
- * instantiates a new Job for each execution.
- *
- * @author Juergen Hoeller
- * @since 19.02.2004
- * @see java.util.TimerTask
- * @see java.util.Timer#schedule(TimerTask, long, long)
- * @see java.util.Timer#scheduleAtFixedRate(TimerTask, long, long)
- */
- public class ScheduledTimerTask {
- private TimerTask timerTask;
- private long delay = 0 ;
- private long period = 0 ;

