Java 中的 Timer 使用和 Quartz 的基本使用(集成了 Spring)

public class AppTest {

    public static void main(String[] args) {
        // 定义每隔 2 秒执行一次任务
        int second = 2;
        Timer timer = new Timer();
        // 就只有一个方法,这个方法的第一个参数是继承了 TimerTask 的对象
        // 第 2 个参数是第 1 次运行经过的时间
        // 第 3 个参数是每一次运行任务的间隔时间
        timer.schedule(new MyTimeTask(), 5 * 1000, second * 1000);
    }

    private static class MyTimeTask extends TimerTask {
        @Override
        public void run() {
            System.out.println("我是任务调度中的代码,循环执行。。。");
        }
    }

}

Quartz 的基本使用(2015年11月学习微信开发使用)

参考资料:http://www.cnblogs.com/kay/archive/2007/11/02/947372.html

1、 pom.xml 代码片段

(1)spring 须要三个模块:core、tx、context-support。
注意:tx 模块不要忘记添加,并且 quartz 的版本也很重要,如果版本错误,则功能很难实现。
(2)quartz :来自 org.quartz-scheduler。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.7.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>4.1.7.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.7.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>

2、写一个任务调度的普通 Java 类

public class QuartzJob {

    public void dosomething() {
        // Quartz 的任务调度
        System.out.println("开始周期性地循环执行任务。。。。");
    }

}

3、编写 Spring 核心配置代码

(1)定义任务调度的工作类(程序员自定义的一个 Java 类);
(2)定义调用的对象和调用的方法,使用 MethodInvokingJobDetailFactoryBean 这个类来定义,注意包名是:org.springframework.scheduling.quartz

(3)定义触发的时间,重点是定义 Cron 表达式,使用 CronTriggerFactoryBean

(4)定义一个总管理类,使用 SchedulerFactoryBean,注意这里设置懒加载为 false,不要自动装配。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <beans>

        <!-- 要调用的工作类 -->
        <bean id="quartzjob" class="com.liwei.quartz.QuartzJob"></bean>

        <!-- 定义调用的对象和调用对象的方法 -->
        <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 调用的类 -->
            <property name="targetObject">
                <ref bean="quartzjob"/>
            </property>

            <!-- 调用类中的方法 -->
            <property name="targetMethod">
                <!-- 这个方法是一个字符串 -->
                <value>dosomething</value>
            </property>
        </bean>


        <!-- 定义触发时间 ,重点在于 Cron 表达式 -->
        <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
            <property name="jobDetail">
                <ref bean="jobtask"/>
            </property>
            <property name="cronExpression">
                <value>0/2 * * * * ?</value>
            </property>
        </bean>

        <!-- 总管理类,将 lazy-init 设置为 false ,在容器启动的时候就会执行调度程序 ,将 autowire 设置为 no -->
        <bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="doTime"/>
                </list>
            </property>
        </bean>

    </beans>

</beans>

4、编写测试代码

public class Main {
    private static AbstractApplicationContext ctx;

    public static void main(String[] args) {
        ctx = new ClassPathXmlApplicationContext("quartz.xml");
        // ctx.destroy();
    }
}

Cron 表达式学习资料:
http://www.cnblogs.com/yanweidie/p/3537144.html

下面这篇文章也讲得比较详细:
Quartz 中时间参数说明 即 Cron 表达式
http://www.cnblogs.com/chinafine/articles/1773389.html

Cron 表达式生成器:
http://jason.hahuachou.com/cron/index.htm


下面的部分是孔浩老师视频里面 quartz 的用法

参考资料:
http://my.oschina.net/u/1157906/blog/193612

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值