스프링 타이머 QuartzJobBean 및 JDK 타이머 타이머

프로젝트 개발은 기본적으로 타이머를 사용하는데, JDK에는 자체 타이머 Timer가 있습니다. Spring 프레임워크에는 자체 타이머 QuartzJobBean도 있습니다. 다음은 이 두 가지를 사용하는 방법입니다.


JDK-타이머 타이머:


jdk 타이머를 사용하는 단계는 매우 간단합니다:
1. 시간이 지정된 작업 클래스를 만들고 TimerTask 클래스를 상속합니다. 시간이 지정된 작업 클래스는 실제 비즈니스 요구 사항을 실현하는 데 사용됩니다.
2. 시간이 지정된 작업 타이머 인스턴스를 만듭니다.
3. 일정을 호출합니다. 작업 인스턴스와 같은 타이밍 매개변수를 포함하는 타이머 인스턴스의 메서드

1) TimerTask를 상속하는 작업 클래스를 정의합니다.

import java.util.TimerTask;

public class TimerTaskBean extends TimerTask {
/**
	 * 定时任务代码块
	 */
	@Override
	public void run() { 
		//TODO 根据需求实现定时任务的代码块
		System.out.println(Thread.currentThread().getName() + " 运行结束");
	}

2) Timer 인스턴스를 생성하고 스케줄 메소드를 실행합니다:

public class TimerDemo {
	public static void main(String[] args) throws ParseException {
		//创建计时器实例
		Timer timer = new Timer("开始执行任务-------------------");
		//创建计时器任务
		TimerTask task = new TimerTaskBean();
		//调用计时器的schedule方法,此处的2000代表当前时间2000毫秒之后开始执行
		timer.schedule(task, 2000);
		System.out.println("定时任务已启动,2秒后执行");
	}
}

타이밍 작업에는 일정 오버로드 방법을 통해 구현되는 여러 모드도 있습니다.

  • 지연 시간(초) 후에 시스템이 시작되고 실행됩니다. 일정(TimerTask 작업, 긴 지연)
  • 시스템이 지정된 시간에 시작되고 실행됩니다: 일정(TimerTask 작업, 날짜 날짜)
  • 시스템이 시작되고, 몇 초의 지연 후에 실행되며, 일정 초 간격마다 실행됩니다. 일정(TimerTask 작업, 긴 지연, 긴 기간)
  • 시스템이 시작되고, 지정된 시간 날짜 이후에 실행되며, 기간(초) 간격마다 실행됩니다. 일정(TimerTask 작업, 날짜 날짜, 장기)

Spring-QuartzJobBean 타이머:

Spring 타이머를 배우기 전에 다음 세 가지 클래스를 살펴보겠습니다.
1. 스케줄링 작업 클래스: org.springframework.scheduling.quartz.JobDetailBean, jobClass 속성을 통해 스케줄링 작업 클래스를 지정합니다(예: 예제의 QuartzJob 클래스). ;

2. 스케줄링 트리거: org.springframework.scheduling.quartz.CronTriggerBean, 객체는 jobDetail 속성을 통해 작업 클래스를 지정하고 cronExpression 속성을 통해 스케줄링 빈도를 지정합니다.

3. 스케줄링 팩토리 클래스: org.springframework.scheduling.quartz.SchedulerFactoryBean, 이 객체는 Triggers 속성을 통해 단일 또는 다중 트리거를 지정합니다.

1. 사업실현 업무분야 :

public class QuartzJob extends QuartzJobBean {
	private static int i = 0;
    //需要调度的任务
	protected void executeInternal(JobExecutionContext context)
		throws JobExecutionException {
		//TODO 根据需求实现定时任务的代码块
		System.out.println("工作类调度" + ++i + "进行中...");
}

둘째, 스프링 파일을 구성합니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
	"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!-- 1、JobDetailBean 工作类配置 -->
	 <bean name="job_1" class="org.springframework.scheduling.quartz.JobDetailBean">
		 <property name="jobClass" value="com.erayt.job.QuartzJob" />
		 <property name="jobDataAsMap">
			 <map>
			 <entry key="timeout" value="10" /><!-- Job1中的 timeout属性,10秒后启用调度-->
			 </map>
		 </property>
	 </bean>
	 <!-- 2、CronTriggerBean 触发器配置-->
	 <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
	 	<property name="jobDetail" ref="job_1" /><!-- 注入1步骤中的工作类 -->
		<!-- 每天凌晨2点执行 -->
		<property name="cronExpression" value="0 0 2 * * ?" />
	 </bean>
	<!-- 3、SchedulerFactoryBean 配置调度工厂 -->
	 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		 <property name="triggers">
			 <list>
			 	<ref bean="cronTrigger1" /><!-- 注入2步骤中触发器 -->
			 </list>
		 </property>
	 </bean>
</beans>

3. 프로젝트를 시작하면 설정된 시간과 스케줄링 빈도에 따라 타이머가 실행됩니다.


———작가: Edge of Dreams


추천

출처blog.csdn.net/gsycwh/article/details/89222744