개발자
spring boot로 개발을 @Async 사용해서 비동기 처리를 하고 있습니다. a, b, c 비동기 작업이 쓰레드 풀을 공유하고 있습니다. a 작업이 딜레이 되며 쓰레드를 점유하고 있어 다른 작업(b, c)에 영향을 끼칠 수 있는 경우라면 보통 쓰레드 풀을 분리해서 사용하나요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2월 27일
네, 일반적으로 서로 다른 작업을 수행하는 비동기 처리를 위해 쓰레드 풀을 분리하는 것이 좋습니다. 하나의 작업이 쓰레드를 과도하게 점유하면 다른 작업들에 대한 성능 제약 사항이 생길 수 있습니다. 따라서, 이런 상황에서는 각각의 작업(a, b, c)에 대해 별도의 쓰레드 풀을 사용하는 것이 좋습니다. Spring Boot에서는 `@Async` 어노테이션과 함께 `TaskExecutor` 빈을 생성하여 주입함으로써 각각의 작업에 대해 별도의 쓰레드 풀을 구성할 수 있습니다. ```java @Configuration public class TaskConfig implements AsyncConfigurer { @Bean(name = "taskExecutorA") public TaskExecutor taskExecutorA() { return new ThreadPoolTaskExecutor(); } @Bean(name = "taskExecutorB") public TaskExecutor taskExecutorB() { return new ThreadPoolTaskExecutor(); } } ``` 그리고 `@Async` 어노테이션에 `"taskExecutorA"`와 같은 방식으로 사용하려는 Task Executor의 이름을 명시하여 사용합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!