Quartz和Timer两种定时器的区别

1:Quartz:

Spring配置文件:

<!-- 配置触发器 -->
	<!-- 配置JOB类 -->
	<bean id="schedulers" class="com.java.activiti.scheduler.schedulers"></bean>
	<!-- 配置JobDetail -->
	<bean id="jobDetail"  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref ="schedulers"></property>
		<property name="targetMethod" value = "excute"></property>
	</bean>
	<!-- 配置trigger -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
                <!-- 调度程序 -->
                <property name="jobDetail" ref="jobDetail"/>
                <!-- 表达式(重点) -->
                <property name="cronExpression" value="0/5 * * * * ? *"/>
            </bean>
	<!-- 配置调度中心 -->
	 <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                <property name="triggers">
                    <list>
                        <ref bean="cronTrigger"/>
                    </list>
                </property>
            </bean>

pom文件加入2个jar包:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>
package com.java.activiti.scheduler;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

@Component
public class schedulers {
	private static final Logger logger = Logger.getLogger(schedulers.class);
	 public void excute() {
		 	logger.debug("开始了哦!");
			System.out.println("定时器正在执行");
		}
}

2:Timer:

package com.java.activiti.timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerTest {
	
	public static void main(String[] args) {
		Timer timer = new Timer();
		Task task = new Task();
		timer.schedule(task, new Date(), 1000);
	}
}
class Task extends TimerTask{
	public void run(){
		System.out.println("Timer开始执行!");
	}
}

JDK源码分析一下,Timer原理:

Timer源码

复制代码
public class Timer {
    /**
     * The timer task queue.  This data structure is shared with the timer
     * thread.  The timer produces tasks, via its various schedule calls,
     * and the timer thread consumes, executing timer tasks as appropriate,
     * and removing them from the queue when they're obsolete.
     */
    private final TaskQueue queue = new TaskQueue();

    /**
     * The timer thread.
     */
    private final TimerThread thread = new TimerThread(queue);
复制代码
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值