根据给定文件的信息,我们可以提炼出以下几个核心知识点: ### 一、使用 Java Timer 实现定时任务 #### 1.1 定时任务基础概念 在Java中,`java.util.Timer` 类提供了一种安排在将来执行任务的方式。通过 `Timer` 和 `TimerTask` 的组合使用,可以实现一次性或周期性的定时任务。 #### 1.2 示例代码分析 在给定的部分内容中,定义了一个名为 `SavaLog` 的类,并在其中声明了一个 `savaLog` 方法。此方法中创建了一个 `Timer` 对象和一个匿名内部类 `TimerTask`。具体实现如下: ```java public class SavaLog { public void savaLog() { Date date = new Date(); Timer timer = new Timer(); // 创建一个定时器实例 TimerTask task = new TimerTask() { // 创建一个定时任务 @Override public void run() { // 重写 run 方法 System.out.println("定时任务开始执行"); } }; timer.schedule(task, date, 1000); // 设置定时器,第一个参数为要执行的任务,第二个参数为第一次执行的时间点,第三个参数为执行间隔 } } ``` 这段代码表示,从当前时间开始,每隔1秒执行一次定时任务。这里需要注意的是,`timer.schedule(task, date, 1000)` 方法中的第二个参数 `date` 表示首次执行的时间点,而第三个参数 `1000` 表示之后每次执行的间隔时间(单位为毫秒)。 #### 1.3 应用场景 这种简单的定时任务实现方式适用于需要周期性执行且逻辑较为简单的场景。例如:日志记录、数据备份等。 ### 二、使用 Spring 框架进行定时任务管理 #### 2.1 Spring 框架介绍 Spring 是一款开源的应用框架,它提供了一系列开发企业级应用的解决方案,其中包括了对定时任务的支持。 #### 2.2 使用 Quartz 实现定时任务 Quartz 是一个功能强大的作业调度库,能够被Java应用程序用于触发事件(如定时任务)。Spring 框架提供了与 Quartz 集成的工具类,使得在 Spring 应用中使用 Quartz 变得更加简单。 #### 2.3 示例代码分析 给定文件的部分内容还展示了如何使用 Spring + Quartz 来实现定时任务: ```xml <bean id="backupQuarz" class="SavaLog"/> <!-- 定义要执行的方法 --> <bean id="quartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="backupQuarz"/> </property> <property name="targetMethod"> <value>savaLog</value> </property> <property name="concurrent" value="false"/> </bean> <!-- 定义触发器 --> <bean id="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="quartzDetail"/> <property name="cronExpression" value="0 35 4 * * ?"/> </bean> <!-- 定义调度器 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="triggerBean"/> </list> </property> </bean> ``` 这里的配置文件指定了定时任务的执行细节。具体来说: - `<bean id="backupQuarz" class="SavaLog"/>` 表示将 `SavaLog` 类作为 Bean 注入。 - `<bean id="quartzDetail">` 定义了具体的任务详情,包括目标对象 `targetObject` 和要执行的方法名 `targetMethod`。 - `<bean id="triggerBean">` 定义了触发器,使用 Cron 表达式 `"0 35 4 * * ?"` 表示每天凌晨4点35分执行一次任务。 - 最后通过 `<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">` 配置了调度器,指定触发器列表。 #### 2.4 应用场景 这种方式适合于复杂的定时任务需求,例如:定时数据同步、定时发送邮件提醒等。由于Spring + Quartz 的高度灵活性,可以根据实际业务需求进行定制化的定时任务设计。 ### 总结 通过对给定文件中的信息进行解析,我们了解到了两种实现定时任务的方法:一种是基于 Java 标准库 `java.util.Timer` 的简单实现;另一种则是利用 Spring 框架集成 Quartz 实现更为复杂灵活的定时任务管理。这两种方法各有优缺点,在实际项目中应根据具体情况选择合适的技术方案。
在此处我用定时将日志文件中的数据入库作为例子来写。
public class SavaLog{
public void savaLog(){
Date() d=new Date();
Timer timer=new Timer();//实力化一个定时器类
TimerTask task=new TimerTask(){
public void run() {//使用匿名类的方式重写TimerTask中的run方法 System.out.println("======================计时器开始加载"); //在此方法中就可以调用数据层方法,或者其他的方法。run()中的内容会感觉我们的设置定时被 执行 }
};/**此处的设置表示从d所标示的时间起,没经过1000毫秒调用一次此方法。如果想每天调用此意则可以将1000修改成 1000*60*60*24。**/
timer.schedule(task, d,1000);
}
}
以上方法,如果是在web项目中,可以将此方法写在action或者是servlet中。然后再页面中加一个form表单。表单中添加一个submit按钮。form表单链接到action或者是servlet。想启动此定时方法的时候只要点击按钮就可以。我写的例子中式取当前时间。也就是点击按钮的时候run方法执行一次。而且是每1秒执行一次。如果将1000修改成 1000*60*60*24。则表示每天在你点击按钮的按个时间调用run方法。执行里面的内容。
2、第二种方式是使用spring的方式来调用
第一步、我们先写一个类,这个类中的方法将会被定时调用
public class SavaLog{
public void savaLog(){
//添加其他的逻辑代码,比如调用数据层的 方法,进行数据库操作。 } }
第二步、导入一个jar包:quartz-all-1.6.5.jar 这个jar包网上到处都有,我的附件中也有提供。
第三步:配置spring的配置文件
<?xml version="1.0" encoding="UTF-8"?> <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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="backupQuarz" class="SavaLog" /><!--此处将类加载进来。如果有 包一定前面要加包名-->
<bean id="quartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="backupQuarz" />
</property>
<property name="targetMethod">
<value>savaLog</value><!--此处添加要定时调用的方法名-->
</property>
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MATLAB实现BO-SVM贝叶斯优化支持向量机多输入单输出回归预测(含模型描述及示例代码)
- MATLAB实现BWO-TCN-Attention数据分类预测(含模型描述及示例代码)
- 深度学习与波前传感器仿真源码+实验报告.zip
- 失物招领平台-基于区块链技术提高物品找回效率(含设计报告及全部资料).zip
- 时间序列异常点检测系统(含源码+项目说明+全部资料).zip
- 时间序列异常检测框架-评估各类算法性能(含源码+项目说明+全部资料).zip
- 食品安全舆情话题检测与追踪系统(基于微博数据,Python源码+项目说明+设计报告).zip
- 时间银行系统-利用区块链技术记录服务交换(含源码及设计文档).zip
- 视觉机械臂小车-工训大赛参赛作品(含源码+项目说明+设计报告).zip
- 使用Kubespray快速部署生产级Kubernetes环境指南(含源码).zip
- 事件相机目标检测下游源码+项目实践文档.zip
- 视力检测系统-基于谷歌Mediapipe框架(后端采用Flask,含源码+项目说明+训练模型).zip
- 视觉手势识别交互系统-图像界面设计(论文+ppt+源码+项目说明).zip
- 视频点播网站开发-基于Django框架(含源码+项目说明+功能模块介绍).zip
- MATLAB实现CSO-BP布谷鸟优化算法优化BP神经网络多输入单输出回归预测(含模型描述及示例代码)
- 视频监控系统-基于Qt+V4L2+OpenCV+SQLite(高分毕设,含源码+项目说明).zip