spring 의 정시 작업 task Scheduler 에 대한 상세 한 소개

머리말
spring 3.0 버 전 이후 정시 작업 도 구 를 가 져 왔 고 간단 하고 편리 하 며 파일 을 설정 하지 않 아 도 실행 상 태 를 동적 으로 바 꿀 수 있 습 니 다.cron 표현 식 으로 정시 작업 을 설정 할 수도 있 습 니 다.
실 행 된 클래스 는 Runnable 인 터 페 이 스 를 실현 해 야 합 니 다.
작업 스케줄 러 인터페이스
Task Scheduler 는 인터페이스 입 니 다.Task Scheduler 인터페이스 에서 6 가지 방법 을 정 의 했 습 니 다.

1、 schedule(Runnable task, Trigger trigger);트리거 를 지정 하여 정시 작업 을 수행 합 니 다.CronTrigger 를 사용 하여 Cron 표현 식 을 지정 하고 정시 작업 을 수행 할 수 있 습 니 다.

 CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");
 taskScheduler.schedule(this, t);
2、 schedule(Runnable task, Date startTime);구체 적 인 시간 대 를 지정 하여 정시 임 무 를 수행 하고 동적 으로 지정 한 시간 을 지정 하여 임 무 를 시작 할 수 있 습 니 다.한 번 만 실행 합 니 다.타이머 보다 훨씬 낫다.이 인 터 페 이 스 를 발 견 했 으 면 좋 았 을 텐 데...)
3、 scheduleAtFixedRate(Runnable task, long period);즉시 실행,순환 작업,실행 주기 지정(밀리초 단위)
PS:지난 주기 가 끝 났 든 안 끝 났 든 다음 주기 가 되면 실행 합 니 다.
4、 scheduleAtFixedRate(Runnable task, Date startTime, long period);지정 한 시간 부터 실행,순환 작업,간격 주기 지정(밀리초 시간 계산)
PS:지난 주기 가 끝 났 든 안 끝 났 든 다음 주기 가 되면 실행 합 니 다.
5、 scheduleWithFixedDelay(Runnable task, long delay);즉시 실행,순환 작업,간격 주기 지정(밀리초 단위)
PS:지난 주기 가 끝나 면 delay 시간 을 기다 리 고 다음 주기 에 실행 합 니 다.
6、 scheduleWithFixedDelay(Runnable task, Date startTime, long delay);지정 한 시간 부터 실행,순환 작업,간격 주기 지정(밀리초 시간 계산)
PS:지난 주기 가 끝나 면 delay 시간 을 기다 리 고 다음 주기 에 실행 합 니 다.
Task Scheduler 아래 다섯 가지 실현 유형 이 있 습 니 다.

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
현재 스 레 드 로 작업 을 수행 합 니 다.이것 은 ConcurrentTask Scheduler 의 하위 클래스 로 JNDI 지원 을 추가 합 니 다.Concurrent Task Scheduler 와 같은 용법 으로 JNDI 를 사용 하여 따로 설정 할 수 있 습 니 다.
3、ThreadPoolTaskScheduler
Task Scheduler 인터페이스의 기본 구현 클래스,다 중 스 레 드 정시 작업 수행.실행 스 레 드 풀 수 를 설정 할 수 있 습 니 다(기본 스 레 드).
PS:
4.567917.사용 하기 전에 반드시 먼저 호출 해 야 합 니 다initialize()[초기 화 방법]
4.567917.4.567914 방법 이 있 습 니 다.실행 이 끝 난 후에 스 레 드 를 닫 을 수 있 습 니 다.4.567918.

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、TimerManagerTaskScheduler
이것 은 사용 되 지 않 으 면 구체 적 으로 알 지 못 하고 시간 이 있 으 면 다시 보충 합 니 다.알 고 있 는 것 은 환영 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기