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方法里写要循环调用的方法,如此简单!
分享到:
相关推荐
在这个“STM32 CUBEMX主从定时器配置PWM任意相位可调,占空比可调工程包方法二”中,我们将深入探讨如何使用CUBEMX来设置主从定时器,生成具有可调节相位和占空比的PWM信号。这种方法被认为优于其他方法,因此值得...
根据给定的文件信息,我们可以深入探讨定时器配置程序在AVR微控制器中的应用与细节。AVR(Atmel's Very Reduced instruction set computer)是一种基于RISC架构的8位微控制器,广泛应用于各种嵌入式系统中。定时器是...
stm32f030的1s定时器延时配置及48MHz时钟配置,直接可用,详细注释。
### STM32定时器输出比较模式完全解读及毫秒级定时器配置 #### 一、STM32定时器概述 STM32微控制器系列中包含了多种类型的定时器,包括高级控制定时器(TIM1和TIM8)、通用定时器(TIM2、TIM3、TIM4和TIM5)以及基本...
在64位通用定时器模式下,我们需要将定时器配置为中断模式。这意味着当计数值达到预设的阈值时,处理器会接收到一个中断请求,而不是立即停止计数。中断模式通常用于处理那些需要在定时器达到特定时间点后执行的任务...
Spring 定时器配置详解 Spring 定时器是一种基于 Quartz 的任务调度框架,它提供了一个灵活的方式来管理和控制任务的执行。下面是 Spring 定时器配置的详细解释。 配置 CronTriggerBean CronTriggerBean 是 ...
单片机程序设计是电子工程领域中的核心技能之一,它涉及到多个关键概念和技术,包括AD转换、串口通讯、定时器配置、端口配置以及延时和I2C通讯等。下面将对这些主题进行详细解释。 首先,AD转换(Analog-to-Digital...
在这个基于STM32CUBEMX的"定时器配置DEMO工程"中,我们将深入探讨如何利用该工具进行定时器的设置和应用。 在STM32微控制器中,定时器是一个核心组件,它允许系统执行各种时间相关的任务,如周期性中断、脉冲宽度...
在这个“STM32 CUBEMX主从定时器配置PWM任意相位可调,占空比可调工程包”中,我们主要关注的是如何利用CUBEMX来配置主从定时器以生成具有灵活相位和占空比调整能力的PWM信号。 首先,让我们了解一下主从定时器的...
linux 配置定时任务, crontab -e 编辑的文本,用户任务定时器配置,目录位置在 /var/spool/cron中的root文件中
该文档主要讲解了定时器的具体的配置规则,以及常用的几种时间配置
总的来说,STM32F4的SysTick定时器配置和延时函数实现是一个关键的系统级任务,需要理解STM32F4的时钟系统、SysTick定时器的工作原理以及如何进行精确的时间计算。通过正确的配置和编程,我们可以利用SysTick实现...
这不仅能够检查定时器配置的正确性,也能检验中断服务函数的执行效果。 总的来说,APM32E103的基本定时器功能强大且灵活,通过熟练掌握其配置和使用,可以有效地控制和协调系统的各个部分。在实际应用中,开发者应...
本文只适合初学者。强烈建议学习git和maven,这里只是简单的应用了git和maven,然后结合spring的定时器配置。若对git感兴趣可以从https://github.com/pengzhengrong查看。
stm8s的定时器配置工具 可以把51时间转换到ST上 也可自己设置
标签"stc12"表明这是关于STC12系列单片机的知识,而压缩包中的"TIMER"文件可能包含更详细的定时器配置代码或示例。在实际开发中,理解这些配置函数和定时器的工作原理对于编写高效的嵌入式程序至关重要。 总之,STC...
以下是对STM32定时器6配置的详细说明: 1. **初始化配置**: 在配置定时器6之前,首先需要开启对应的时钟。在STM32CubeMX或者手工编写代码中,你需要设置RCC_APB1ENR1寄存器的TIM6EN位,使能TIM6时钟。 2. **...
2. **开启中断源**:为使定时器中断生效,需要在定时器配置中开启相应的中断标志。比如,要启用溢出中断,就需要设置TIMx_DIER寄存器的UIE位。 3. **编写中断服务函数**:中断服务函数是中断发生时被调用的代码段。...
将SpringMVC、Hibernate和定时器整合,通常是在SpringMVC中配置一个定时任务,该任务利用Hibernate进行数据库操作。首先,你需要在SpringMVC的配置文件中添加定时任务的配置,比如使用Spring的TaskExecutor或...
`project`目录下的工程文件中,你可以看到具体的定时器配置代码和中断服务函数。`applications`目录可能包含了使用定时器实现的实例应用,如LED闪烁、PWM输出或ADC采样同步等。 通过学习这个项目,你可以了解到如何...