이 글에서는 봄에 예정된 작업 taskScheduler에 대한 관련 정보를 주로 샘플 코드를 통해 자세히 소개하고 있습니다. 도움이 필요한 친구들은 아래에서 확인해 보세요.
서문
다 아시다시피 Spring 버전 3.0 이후에는 예약 작업 도구가 포함되어 있어 간단하고 편리합니다. 구성 파일 없이 실행 상태를 동적으로 변경하여 사용할 수 있습니다. cron 표현식을 사용하여 예약된 작업을 설정할 수도 있습니다.
실행된 클래스는 Runnable 인터페이스를 구현해야 합니다.
TaskScheduler 인터페이스
TaskScheduler TaskScheduler 인터페이스는 트리거 실행 타이밍을 지정하기 위해
1, schedule(Runnable task, Trigger trigger);
6가지 메소드를 정의하는 인터페이스입니다. . CronTrigger를 사용하여 Cron 표현식을 지정하여 예약된 작업을 실행할 수 있습니다
CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?"); taskScheduler.schedule(this, t);
2, schedule(Runnable task, Date startTime);
특정 시점 지정 예약된 작업을 실행하려면 시간을 동적으로 지정하고 작업을 시작할 수 있습니다. 한 번만 실행됩니다. (Timer보다 훨씬 사용하기 쉽습니다. 이 인터페이스를 더 일찍 발견했으면 좋았을 텐데요...)
3. scheduleAtFixedRate(Runnable task, long period);
즉시 실행하고, 작업을 순환하고, 실행 주기 지정(밀리초 타이밍)
PS: 이전 주기가 완료되었는지 여부에 관계없이 다음 주기는 다음 주기가 실행될 때 실행을 시작합니다. 시간이 다 되었습니다
4. scheduleAtFixedRate(Runnable task, Date startTime, long period);
실행 시작 시간 지정, 작업 순환, 간격 지정(밀리초 타이밍)
PS ; 작업, 간격 지정(밀리초)
PS: scheduleWithFixedDelay(Runnable task, long delay);
이전 주기 이후 지연 시간을 기다리면 다음 사이클이 실행됩니다
6.
실행 시작 시간을 지정하고 작업을 순환하며 간격 지정(밀리초 타이밍)
PS:scheduleWithFixedDelay(Runnable task, Date startTime, long delay);
이전 주기가 실행된 후 지연 시간을 기다리면 다음 주기가 실행되기 시작합니다.
TaskScheduler에는 5개의 구현 클래스가 있습니다
1. ConcurrentTaskScheduler
실행 현재 스레드의 작업. 작업이 간단한 경우 이 클래스를 사용하여 직접 수행할 수 있습니다. 빠르고 편리합니다.
이것은 단일 스레드 작업입니다
public class LocTest implements Runnable { private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler(); private void start() { tpts.schedule(this, new Date()); } public void run() { Thread ct = Thread.currentThread(); System.out.println("current id:"+ct.getId()); System.out.println("current name:"+ct.getName()); } public static void main(String[] args) { new LocTest().start(); } }
2 . DefaultManagedTaskScheduler 현재 스레드에서 작업을 실행합니다. 이는 ConcurrentTaskScheduler의 하위 클래스이며 JNDI 지원을 추가합니다. ConcurrentTaskScheduler와 사용법은 동일하며 JNDI를 사용하여 별도로 설정해야 합니다
3. ThreadPoolTaskSchedulerTaskScheduler 인터페이스의 기본 구현 클래스, 멀티 스레드 예약 작업 실행. 실행 스레드 풀 수를 설정할 수 있습니다(기본값은 스레드 1개).
[초기화 방법]
에는initialize()
public class LocTest implements Runnable { private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); private void start() { taskScheduler.setPoolSize(10); //必须得先初始化,才能使用 taskScheduler.initialize(); taskScheduler.schedule(this, new Date()); } public void run() { Thread ct = Thread.currentThread(); System.out.println("current id:"+ct.getId()); System.out.println("current name:"+ct.getName()); } public static void main(String[] args) { new LocTest().start(); } }
4. TimerManagerTaskSchedulershutDown()
위는 예정된 코드 예시에 대한 자세한 소개입니다. task taskScheduler의 봄 콘텐츠, 더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트(m.sbmmt.com)에 주목하세요!