`
x409401000
  • 浏览: 1540 次
文章分类
社区版块
存档分类
最新评论

java 定时任务的实现方式2

阅读更多

     经过这次项目对于定时调用有了一定的了解。感觉比较好的有两种方法,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定时任务的实现方式

    本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种方式是使用Java内置的`Timer`类。`Timer`类提供了定时任务调度的功能,可以按照预设的时间间隔执行任务。在提供...

    java实现定时任务java实现定时任务

    java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现...

    java轻松实现—定时任务

    在Java中,我们可以利用`java.util.Timer`类和`java.util.TimerTask`类来实现简单的定时任务,但这种实现方式存在线程安全问题。在Web应用中,我们可以利用Servlet容器提供的特性来更优雅地处理定时任务,这就是描述...

    java定时任务,每天定时执行任务

    Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能,具体来说,就是在每天的凌晨 2 点...

    java定时任务调度

    Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...

    java动态管理定时任务

    在Java开发中,定时任务是不可或缺的一部分,尤其在企业级应用中,用于执行定期的数据处理、报表生成、系统维护等工作。Spring框架与Quartz库的整合提供了强大的动态管理定时任务的能力。下面我们将深入探讨这个主题...

    java 定时任务及jar包

    以上就是关于Java定时任务的一些基本知识点,包括`java.util.Timer`、`ScheduledExecutorService`以及Spring框架下的定时任务实现方式。了解这些内容后,你可以根据项目需求灵活地创建和管理定时任务。

    java定时任务小例子

    Java定时任务是编程中常见的一种需求,用于在特定...对于初学者,这是一个很好的起点,可以了解到基础的定时任务实现方式。然而,随着技能的提升,应该学习并理解更多高级的定时任务解决方案,以适应更复杂的应用场景。

    java定时任务quartz的基本实现

    Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...

    spring整合java quartz实现动态定时任务的前台网页配置与管理

    可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...

    JAVA定时任务调度

    Java定时任务调度是Java开发中一个非常重要的技术领域,它允许开发者在特定的时间点或按照预定义的周期执行任务,从而实现自动化的工作流程。在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util...

    java定时任务开源案例

    综上所述,Java定时任务的实现方式多样,选择哪种方式取决于具体需求和项目规模。对于小型应用,可能内置的`ScheduledExecutorService`就足够了;而对于大型、复杂的调度需求,Quartz或Spring Scheduler可能是更好的...

    Java定时执行某个任务

    总结起来,Java提供了`Timer`和`ScheduledExecutorService`两种方式来实现定时执行任务。`Timer`适合简单的定时任务,而`ScheduledExecutorService`更适合复杂的需求,如多线程环境和高并发场景。选择哪种方式取决于...

    java定时任务

    "java定时任务" java定时任务是指在...java定时任务可以使用多种方式来实现,包括使用Timer和TimerTask类、使用Thread类的sleep方法、使用ScheduledExecutorService类等。选择哪种方式取决于具体的应用场景和需求。

    Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)

    Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...

    Java定时任务实现解析.pptx.pptx

    本篇将深入解析Java定时任务的原理、常见实现方式以及应用场景,并对它的优缺点进行分析。 一、Java定时任务简介 Java定时任务是一种编程机制,能够帮助开发者实现按需执行的任务,这些任务可能是周期性的或一次性...

    java quartz 定时任务

    在Java中,可以使用ScheduledExecutorService或者Quartz来实现定时任务。 3. **Cron表达式**: - Cron表达式是Unix cron服务的一种时间格式,用于定义任务的执行时间。它由7个子字段组成(秒、分钟、小时、日期、...

    java 定时执行任务

    随着Java并发包的发展,`ScheduledExecutorService`成为了更推荐的定时任务实现方式。它可以更灵活地处理定时和周期性任务,并且线程池管理更加高效。 ```java import java.util.concurrent.*; class Scheduled...

Global site tag (gtag.js) - Google Analytics