经过这次项目对于定时调用有了一定的了解。感觉比较好的有两种方法,1、一种是Timer类的定时调用。这种方式的缺点就是第一次调用的时候要手动启动,以后开始每天循环调用。当然这种方式的好处就是可以控制每天调用多少次。虽然第一次比较麻烦,但是给我的感觉还是不错的。下面我们来把这种方式稍微写一下。
在此处我用定时将日志文件中的数据入库作为例子来写
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> <property name="concurrent" value="false" /> </bean> <bean id="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- see the example of method invoking job above --> <property name="jobDetail" ref="quartzDetail" /> <!-- 每天早上4:35调用一次。 --> <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> </beans>
以上内容完成后就可以进行调用调用savaLog方法了。要注意的是。调用的这个方法不能有传入参数。如果是在web项目中。涉及到调用action中的方法,而你的action又用spring进行了代理。也就是 spring中有一个bean的配置是<bean:name="/log" class="SavaLog"> ,此时,就要更改一下配置,配置如下:
<bean id="quartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="/log" /> </property> <property name="targetMethod"> <value>savaLog</value><!--此处添加要定时调用的方法名--> </property> <property name="concurrent" value="false" /> </bean> <bean id="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- see the example of method invoking job above --> <property name="jobDetail" ref="quartzDetail" /> <!-- 每天早上4:35调用一次。 --> <property name="cronExpression" value="0 35 4 * * ?"/> </bean> <!-- 启动前面定义的定时器 --> <beanclass="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="triggerBean" /> </list> </property> </bean>
相关推荐
本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种方式是使用Java内置的`Timer`类。`Timer`类提供了定时任务调度的功能,可以按照预设的时间间隔执行任务。在提供...
java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现...
在Java中,我们可以利用`java.util.Timer`类和`java.util.TimerTask`类来实现简单的定时任务,但这种实现方式存在线程安全问题。在Web应用中,我们可以利用Servlet容器提供的特性来更优雅地处理定时任务,这就是描述...
Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能,具体来说,就是在每天的凌晨 2 点...
Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...
在Java开发中,定时任务是不可或缺的一部分,尤其在企业级应用中,用于执行定期的数据处理、报表生成、系统维护等工作。Spring框架与Quartz库的整合提供了强大的动态管理定时任务的能力。下面我们将深入探讨这个主题...
以上就是关于Java定时任务的一些基本知识点,包括`java.util.Timer`、`ScheduledExecutorService`以及Spring框架下的定时任务实现方式。了解这些内容后,你可以根据项目需求灵活地创建和管理定时任务。
Java定时任务是编程中常见的一种需求,用于在特定...对于初学者,这是一个很好的起点,可以了解到基础的定时任务实现方式。然而,随着技能的提升,应该学习并理解更多高级的定时任务解决方案,以适应更复杂的应用场景。
Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...
可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...
Java定时任务调度是Java开发中一个非常重要的技术领域,它允许开发者在特定的时间点或按照预定义的周期执行任务,从而实现自动化的工作流程。在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util...
综上所述,Java定时任务的实现方式多样,选择哪种方式取决于具体需求和项目规模。对于小型应用,可能内置的`ScheduledExecutorService`就足够了;而对于大型、复杂的调度需求,Quartz或Spring Scheduler可能是更好的...
总结起来,Java提供了`Timer`和`ScheduledExecutorService`两种方式来实现定时执行任务。`Timer`适合简单的定时任务,而`ScheduledExecutorService`更适合复杂的需求,如多线程环境和高并发场景。选择哪种方式取决于...
"java定时任务" java定时任务是指在...java定时任务可以使用多种方式来实现,包括使用Timer和TimerTask类、使用Thread类的sleep方法、使用ScheduledExecutorService类等。选择哪种方式取决于具体的应用场景和需求。
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
本篇将深入解析Java定时任务的原理、常见实现方式以及应用场景,并对它的优缺点进行分析。 一、Java定时任务简介 Java定时任务是一种编程机制,能够帮助开发者实现按需执行的任务,这些任务可能是周期性的或一次性...
在Java中,可以使用ScheduledExecutorService或者Quartz来实现定时任务。 3. **Cron表达式**: - Cron表达式是Unix cron服务的一种时间格式,用于定义任务的执行时间。它由7个子字段组成(秒、分钟、小时、日期、...
随着Java并发包的发展,`ScheduledExecutorService`成为了更推荐的定时任务实现方式。它可以更灵活地处理定时和周期性任务,并且线程池管理更加高效。 ```java import java.util.concurrent.*; class Scheduled...