실제 개발에서는 일부 예약된 작업 시나리오를 어느 정도 사용하게 됩니다. 이 문서에서는 일반적으로 사용되는 예약된 작업에 대해 설명합니다.
일반적으로 사용되는 예약된 작업 구현 솔루션은 다음과 같습니다.
타이머: 이것은 자바의 자동입니다 java.util.Timer 클래스를 사용하면 이 클래스를 사용하여 java.util.TimerTask작업. 이 방법을 사용하면 프로그램이 특정 빈도로 실행될 수 있지만 지정된 시간에는 실행되지 않습니다. 일반적으로 덜 사용됩니다. Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。
Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。
Quartz
ScheduledExecutorService: 이후에도 jdk 제공되는 클래스는 스레드 풀 설계를 기반으로 하는 예약된 작업 클래스입니다. 예약된 각 작업은 실행을 위해 스레드 풀의 스레드에 할당됩니다.
Spring Task:Spring 3.0에 포함된 작업은 다음과 같습니다. 가벼운 Quartz로 간주되며 Quartz보다 사용이 훨씬 간단합니다. 석영: 이것은 상대적으로 강력한 스케줄러를 사용하면 프로그램이 지정된 시간이나 특정 빈도로 실행될 수 있지만 구성이 약간 복잡합니다.
데이터베이스에서 테이블을 생성하고 테이블에 cron 표현식을 저장합니다.
nacos는 분산 구성을 사용하여 동적 구성 cron 표현식을 구현합니다.
XXL-JOB, 분산 고정 작업 🎜🎜🎜Using Timer🎜🎜 🎜🎜🎜이것은 현재 프로젝트에서 덜 사용되며 데모 코드가 직접 게시됩니다. 🎜🎜자세한 소개를 보려면 API를 확인하세요: 🎜
public class TestTimer {
public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("task run:"+ new Date());
}
};
Timer timer = new Timer();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。这里是每3秒执行一次
timer.schedule(timerTask,10,3000);
}
}
Use ScheduledExecutorService
이 방법은 Timer와 유사합니다. 데모를 살펴보세요.
public class TestScheduledExecutorService {
public static void main(String[] args) {
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
// 参数:1、任务体 2、首次执行的延时时间
// 3、任务执行间隔 4、间隔时间单位
service.scheduleAtFixedRate(()->System.out.println("task ScheduledExecutorService "+new Date()), 0, 3, TimeUnit.SECONDS);
}
}
Spring 작업 사용
간단한 예약 작업
Spring Boot 프로젝트에서 이를 사용할 수 있습니다. 예약된 작업을 구현하기 위한 매우 우아한 주석, 먼저 프로젝트 생성, 종속성 가져오기: