Spring의 @Async는 스레드 풀(Thread Pool)과 프록시(Proxy) 기반으로 동작합니다.
즉, 스프링 AOP(Aspect-Oriented Programming) 방식으로 비동기 처리를 수행합니다.
✔️ 실행 과정
@Async 메서드를 감싸고 관리유의사항
@Async 는 스프링 AOP를 사용하기 때문에 기본적으로 AOP 사용시 주의할 점을 똑같이 주의 해줘야 합니다.
method 접근지정자 private 사용 불가
self-invocation(자가 호출) 불가, 즉 inner method는 사용 불가
thread pool 설정을 하지 않는다면 common pool 을 사용하게 되는데 사용하지 않도록 별도에 thread pool에 thread를 사용하도록 설정해야한다.(why? Common Pool은 다른 라이브러리에서도 사용할 가능성이 있음 즉! 충돌 가능성이 있다)
쓰레드 풀 관리