@EnableScheduling
및 @EnableAsync
으로 봄 부팅을 사용하고 있습니다.@Scheduled 메서드 내에서 Spring @Async 메서드 호출
나는 @Scheduled
이라는 주석이 달린 메소드를 가지고 있습니다. 나는 더 많은 방법을 가지고 있으며, 이것들은 @Async
으로 주석되어있다.
이제이 @Async
메서드를 @Scheduled
메서드에서 호출하고 비동기 메서드에서 현재 스레드의 이름을 출력합니다. 내가 보는 것은 모두 같은 스레드 이름을 가지고 있는데 실제로는 @Scheduled
메서드를 실행하는 스레드입니다.
비동기 메서드 실행이 표시되지 않습니다. 여기에 무슨 문제가 있습니까? 풀 한 스레드-1에서 : 여기
내 스케줄러 클래스 스레드에 의해 호출@Component
public class TaskScheduler {
private static final Logger logger = Logger.getLogger(TaskScheduler.class);
@Scheduled(fixedDelay = 10000)
public void ScheduledMethod() {
methodOne();
methodTwo();
methodThree();
}
@Async
private void methodOne() {
logger.info("Method one called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
@Async
private void methodTwo() {
logger.info("Method two called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
@Async
private void methodThree() {
logger.info("Method three called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
}
출력
방법 1 내 응용 프로그램 부팅 클래스 다음
@SpringBootApplication
@EnableScheduling
@EnableAsync
public class ApplicationBoot {
public static void main(String[] args) {
SpringApplication.run(ApplicationBoot.class, args);
}
}
입니다 Tue Apr 04 16:32:27 IST 2017
스레드에 의해 호출 된 메서드 2 : Tue Apr 04 16:32:27 IST 2017
스레드가 호출하는 메서드 3 : Tue Apr 04 16:32:27에서 pool-1-thread-1 IST 2017
일부 코드 샘플 도움이 될 것입니다. – Manuel
코드 외에도 구성 및 예제 출력을 게시하십시오. –
@Manuel은 샘플 코드를 추가했습니다. –