프로젝트 개발은 기본적으로 타이머를 사용하는데, 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