>  기사  >  Java  >  봄의 예약 작업 taskScheduler 코드 예제에 대한 자세한 소개

봄의 예약 작업 taskScheduler 코드 예제에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-06 10:32:462069검색

이 글에서는 봄에 예정된 작업 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

실행 현재 스레드의 작업. 작업이 간단한 경우 이 클래스를 사용하여 직접 수행할 수 있습니다. 빠르고 편리합니다.


PS:


이것은 단일 스레드 작업입니다


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. ThreadPoolTaskScheduler

TaskScheduler 인터페이스의 기본 구현 클래스, 멀티 스레드 예약 작업 실행. 실행 스레드 풀 수를 설정할 수 있습니다(기본값은 스레드 1개).


PS:



사용 전 호출 필수

[초기화 방법]

에는
    메서드가 있으므로 실행 후 스레드를 닫을 수 있습니다
  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();
    }
    }
  2. 4. TimerManagerTaskSchedulershutDown()

    아직 사용해보지 않아서 자세한 내용은 이해가 안가는데 시간이 나면 추가하겠습니다. 더 아시는 분들 추가바람.

요약

위는 예정된 코드 예시에 대한 자세한 소개입니다. task taskScheduler의 봄 콘텐츠, 더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트(www.php.cn)에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.