zoukankan      html  css  js  c++  java
  • 定时器的使用

    前几天接到的需求是要求在正在开发的项目中添加一个远程调用的模块,并且是要求定时调用。就考虑到定时器机制。

    查了一下java开发中大约有三种j定时机制,java本身自带的机制,还有一个是spring框架自带的定时机制,还有一个就是我所采用的quartz定时器。三者的区别大家可以找到。

    我在spring框架中使用quartz的步骤总结:

    1.引入jar包--我使用的是maven项目

    
    
    <!--Quartz 定时调度器  begin-->
    <dependency>
       <groupId>org.quartz-scheduler</groupId>
       <artifactId>quartz</artifactId>
       <version>2.2.1</version>
    </dependency>
    <!--Quartz 定时调度器  end-->
    
    

    2.创建定时器类

    public class ExecuteTimerTask{
        protected Logger logger = LoggerFactory.getLogger(getClass());//日志对象
        @Autowired
        private CallApiService callApiService;//注入执行远程调用的Service
        /**
         * @功能描述 执行远程调用
         */
        public void execute(){
            callApiService.saveElectricity();
        }
    }

    3.配置spring-context-quartz.xml

    <!-- 要执行的远程调用任务类 -->
        <bean id="quartzJob" class="com.thinkgem.jeesite.modules.rmi.time.ExecuteTimerTask" />
    
        <!-- 将需要执行的定时任务注入JOB中。 -->
        <bean id="methodInvokingJmobDetailFactoryBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="quartzJob"></property>
            <!-- 任务类中需要执行的方法 -->
            <property name="targetMethod" value="execute"></property>
            <!--&lt;!&ndash; 上一次未执行完成的,要等待有再执行。 &ndash;&gt;-->
            <!--<property name="concurrent" value="false"></property>-->
        </bean>
    
        <!-- 基本的定时器配置 -->
       <!-- <bean id="" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
            <property name="jobDetail" ref="methodInvokingJmobDetailFactoryBean"></property>
    
            <property name="startDelay" value="3000"></property>
            <property name="repeatInterval" value="2000"></property>
        </bean>-->
    <!--不同的定时配置类,实现不同功能而已--> <bean id="cronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!--制定调用任务及方法--> <property name="jobDetail" ref="methodInvokingJmobDetailFactoryBean" /> <!--设置调用的周期--> <!--暂设每分钟执行一次--> <property name="cronExpression" value="0 0/1 * * * ?" /> </bean> <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerFactoryBean"></ref> </list> </property> </bean> </beans>

    我使用的是配置文件的方式进行开发的





  • 相关阅读:
    Java中List集合去除重复数据的方法
    ActiveMQ消息中间件Producer和Consumer
    JMS Activemq实战例子demo
    利用正则表达式判断输入内容是否全中文
    纯js的右下角弹窗
    java开源项目
    linux部署jdk-tomcat
    你的主机中的软件中止了一个已建立的连接。
    Centos编译安装 LAMP (apache-2.4.7 + mysql-5.5.35 + php 5.5.8)+ Redis
    在LAMP的生产环境内添加PHP的cURL扩展模块
  • 原文地址:https://www.cnblogs.com/kongweiteng/p/6726270.html
Copyright © 2011-2022 走看看