当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

定时器配置

发表于: 2011-05-27   作者:g21121   来源:转载   浏览:
摘要: 1.spring定时器是大家在做项目的时候经常用到的,有了定时器就可以有一定规律的调用某些接口或者执行某些程序。 首先是spring文件配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN&

1.spring定时器是大家在做项目的时候经常用到的,有了定时器就可以有一定规律的调用某些接口或者执行某些程序。

首先是spring文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>


	<!-- 12小时执行一次 	-->
	<bean id="recordJobTimer" class="org.springframework.scheduling.timer.ScheduledTimerTask">
		<property name="timerTask">
			<ref bean="recordDeleteJob" />
		</property>
		<property name="delay">
			<value>43200000</value>
		</property>
		<property name="period">
			<value>30000</value>
		</property>
	</bean>
	
	<bean id="job2"  class="org.springframework.scheduling.timer.TimerFactoryBean">
		<property name="scheduledTimerTasks">
			<list>
				<ref bean="recordJobTimer" />
			</list>
		</property>
	</bean>
	<!-- 录音删除 -->
	<bean id="recordDeleteJob" class="com.net263.ccs.job.RecordDeleteJob">
		<property name="localPath" value="${ftp.local}"/>
	</bean>

</beans>

 

然后是实现类的代码:

package com.net263.ccs.job;

import java.io.File;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.springframework.util.StringUtils;

import com.net263.ccs.common.Constants;

import com.net263.ccs.util.DateUtil;

/**
 * 类描述:录音文件删除
 * 
 * @author ming.li
 * @time 2011-5-17 上午11:16:33
 */
public class RecordDeleteJob extends TimerTask {

	/** 本地目录 */
	private String localPath;
	/** 日志logger */
	protected final Logger logger = Logger.getLogger(getClass());

	

	/**
	 * 定时删除录音文件
	 */
	@Override
	public void run() {

		// 获取今天
		String today = DateUtil.getCurrentSimpleTime().substring(0, 8);
		// 根目录
		File f = new File(localPath);
		if (!f.exists()) {
			logger.error("文件夹不存在");
			return;
		}
		// 取次级目录
		String[] dirs = f.list();
		if (dirs != null && dirs.length > 0)
			for (String dir : dirs) {
				if (StringUtils.hasText(dir)) {
					File d = new File(localPath + dir);
					String[] dirDateTemp = dir.substring(11).split("-");
					String dirDate = dirDateTemp[0] + dirDateTemp[1] + dirDateTemp[2];
					// 判断超过一个月
					if (Integer.parseInt(today) - Integer.parseInt(dirDate) > Constants.MIN_DELETE)
						if (d.delete()) {
							// 删除成功
						} else {
							File[] fs = d.listFiles();
							for (int i = 0; i < fs.length; i++) {
								if (!fs[i].isDirectory()) {
									fs[i].delete();
									logger.info("删除文件:" + fs[i].getAbsolutePath());
								}
							}
							d.delete();
							logger.info("删除除文件夹");
						}
				}
			}

	}

	/**
	 * @param localPath
	 *            the localPath to set
	 */
	public void setLocalPath(String localPath) {
		this.localPath = localPath;
	}

}

 

2.java也有自己的定时器,而且实现起来更加简单.

首先创建一个Test类

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Timer;


public class Test {
	
	private static int time;
	private static Properties p; // Properties p = System.getProperties();
	static {
		InputStream is = TestJob.class.getClassLoader().getResourceAsStream("common.properties");
		p = new Properties();
		try {
			p.load(is);
			time = Integer.parseInt(p.getProperty("test.delay"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		
		Timer timer = new Timer();
		timer.schedule(new TestJob(), 1000, time);// 在1秒后执行此任务,每次间隔xxx秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.

	}

}

 

然后创建一个TestJob类,继承TimerTask

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.TimerTask;

public class TestJob extends TimerTask {


	private static Properties p; // Properties p = System.getProperties();
	/** 日志logger */
	
	static {
		InputStream is = TestJob.class.getClassLoader().getResourceAsStream("common.properties");
		p = new Properties();
		try {
			p.load(is);

			System.out.println("初始化成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void run() {

	}

}

 

run方法里写要循环调用的方法,如此简单!

定时器配置

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
jbpm的定时器支持嵌入到状态节点(State),任务节点(Task),子流程(Sub-process),组(Group),流
1. 项目结构图 2. TestTimer.Java 代码 package test; import org.springframework.stereotype.Repo
applicationContext.xml 代码如下: <?xml version="1.0"encoding="UTF-8"?> <beansxmlns=
画个可以闪动的“|”,表明焦点。 众所周知,Java语言在语言的低层就支持多线程,在Java中可以使用
一:在applicationContext.xml配置文件中的配置: <!-- 。。。。。。。。。。。。。。。。。。。
实验十九、RIP-2 路由协议定时器配置 一、 实验目的 1. 掌握RIP 定时器的配置 2. 理解RIP 周期性发
在Java报表软件中,您可能需要面临定期产生,定期发布等问题,FineReport报表提供了定时器这个功能
Java报表工具定时器配置简要说明 在Java报表工具中,您可能需要面临定期产生,定期发布等问题,Fine
说明:所需jar包: (注:单单是在后台执行需要的jar包,若是经过tomcat执行,需额外添加一个jar包
1.相关寄存器介绍 1)LOCKTIME 注: 这个寄存器主要是用于设置upll和mpll 的锁紧时间计数值 , 一般使
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号