실제 개발 프로젝트를 진행하다 보면 매시간 새로 등록된 사용자 수를 세는 것, 매일 오전 1시에 서버 캐시를 정리하는 것, 사용자 수를 세는 것 등을 하기 위해 예약된 작업이 필요할 때가 많습니다. 매주 금요일 멤버십을 구매한 분들을 기다려주세요.
SpringBoot는 예약된 작업 프로그램을 작성하는 데 매우 편리한 주석 방법을 제공합니다. 구성 파일과 종속성을 추가할 필요가 없습니다. 다음 주석을 추가하세요. : 예약된 작업에 대한 지원 활성화
주석 방법 - 단일 스레드Create SchedulerTask1 클래스 저장소 및 작업 패키지:
@SpringBootApplication @EnableScheduling public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Create SchedulerTask2 클래스 저장소 및 작업 패키지:
@Component public class SchedulerTask1 { @Scheduled(cron = "*/6 * * * * ?") private void process(){ System.out.println("SchedulerTask1 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName()); } }
@Scheduled 매개 변수는 두 가지 타이밍 설정을 허용할 수 있습니다. 하나는 다음과 같습니다. 일반적으로 사용되는 cron="*/6 * * * * ?"이고 다른 하나는 fixRate = 3000입니다. 둘 다 X초마다 콘텐츠를 인쇄한다는 의미입니다.
fixedRate 설명@Scheduled(fixedRate = 3000) : 마지막 실행 시점부터 3초 후에 실행
@Scheduled(fixedDelay = 3000) : 마지막 실행 완료 시점부터 3초 후에 실행
@Scheduled(initialDelay) =1000,fixedRate=6000): 첫 번째 1초 지연 후 실행된 다음
fixedRate
Cron 표현식 매개변수의 규칙에 따라 6초마다 실행됩니다. 각각 다음을 나타냅니다.초(0~ 59) 예를 들어 0/5는 5초마다
분(0~59)
시간(0~23)
일(0~31)을 의미하며 특정일에
개월( 0~11)
요일 (1~7 또는 SUN/MON/TUE/WED/THU/FRI/SAT 입력 가능)
프로젝트를 시작하면 실행 결과는 다음과 같습니다@Component
public class SchedulerTask2 {
@Scheduled(fixedRate = 3000)
private void process(){
System.out.println("SchedulerTask2 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
}
}
위의 두 예약된 작업이 동일한 스레드(scheduling-1)를 사용하여 동시에 실행될 때 작업의 실행 시간이 이전 작업의 실행 시간에 영향을 받는 것을 볼 수 있습니다.
새 MultithreadScheduleTask 클래스를 생성하고 작업 패키지에 저장합니다:
SchedulerTask2 : 21:36:47.795008800 线程 : scheduling-1 SchedulerTask1 : 21:36:48.014888600 线程 : scheduling-1 SchedulerTask2 : 21:36:50.792887400 线程 : scheduling-1 SchedulerTask2 : 21:36:53.792697900 线程 : scheduling-1 SchedulerTask1 : 21:36:54.002684700 线程 : scheduling-1 SchedulerTask2 : 21:36:56.792517700 线程 : scheduling-1 SchedulerTask2 : 21:36:59.792606400 线程 : scheduling-1 SchedulerTask1 : 21:37:00.002598400 线程 : scheduling-1 SchedulerTask2 : 21:37:02.792423300 线程 : scheduling-1 SchedulerTask2 : 21:37:05.802238 线程 : scheduling-1 SchedulerTask1 : 21:37:06.002225200 线程 : scheduling-1@EnableAsync: 멀티 스레딩 켜기
프로젝트를 시작하면 실행 결과는 다음과 같습니다. :
아아아아위 내용은 SpringBoot 예약 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!