Spring Task Scheduler

Promh90·2021년 11월 26일
0

spring boot

목록 보기
3/4

REF: https://www.baeldung.com/spring-task-scheduler

  1. ThreadPoolTaskScheduler
  • ThreadPoolTaskScheduler는 ScheduledExecutorService 에게 작업을 위임
  • TaskExecutor 인터페이스를 구현하여 내부스레드 관리에 적합
  • @Scheduled annotation 뿐만 아니라 비동기적인 실행 처리가능
@Configuration
@ComponentScan(
  basePackages="com.baeldung.taskscheduler",
  basePackageClasses={ThreadPoolTaskSchedulerExamples.class})
public class ThreadPoolTaskSchedulerConfig {
 
    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
        ThreadPoolTaskScheduler threadPoolTaskScheduler
          = new ThreadPoolTaskScheduler();
        threadPoolTaskScheduler.setPoolSize(5);
        threadPoolTaskScheduler.setThreadNamePrefix(
          "ThreadPoolTaskScheduler");
        return threadPoolTaskScheduler;
    }
}
  • 5개 쓰레드의 풀사이즈로 비동기적인 실행, 수행되는 Job의 Thread 이름에 Prefix 지정

SimpleTask 구현

class RunnableTask implements Runnable{
    private String message;
     
    public RunnableTask(String message){
        this.message = message;
    }
     
    @Override
    public void run() {
        System.out.println(new Date()+" Runnable Task with "+message
          +" on thread "+Thread.currentThread().getName());
    }
}

taskScheduler에 의한 SimpleTask 스케줄링

class RunnableTask implements Runnable{
    private String message;
     
    public RunnableTask(String message){
        this.message = message;
    }
     
    @Override
    public void run() {
        System.out.println(new Date()+" Runnable Task with "+message
          +" on thread "+Thread.currentThread().getName());
    }
}

Scheduling at a Fixed Rate

taskScheduler.scheduleAtFixedRate(
  new RunnableTask("Fixed Rate of 2 seconds") , 2000);

Scheduling with CronTrigger

CronTrigger cronTrigger 
  = new CronTrigger("10 * * * * ?");

taskScheduler.schedule(new RunnableTask("Cron Trigger"), cronTrigger);

PeriodicTrigger

PeriodicTrigger periodicTrigger 
  = new PeriodicTrigger(2000, TimeUnit.MICROSECONDS);

taskScheduler.schedule(
  new RunnableTask("Periodic Trigger"), periodicTrigger);


periodicTrigger.setFixedRate(true);
periodicTrigger.setInitialDelay(1000);
profile
재밌고 편하게~ 나의 개발 기록 Velog

0개의 댓글