Inflearn brand logo image

Inflearn Community Q&A

kimjungmin89763927's profile image
kimjungmin89763927

asked

Kim Young-han's Practical Java - Advanced, Part 1: Multithreading and Concurrency

Executor Thread Pool Management - Code

Executor 스레드 풀 관리 질문

Written on

·

33

0

[질문 내용]
여기에 질문 내용을 남겨주세요.

궁금한 것이 생겨서 질문 남깁니다.

Executor 스레드 풀 관리에서 예제와 같은 상황일 때, 만약 요청이 계속 들어온다면 초과 스레드를 유지하는 것이 좋다고 말씀하셨습니다.

 

거기서 의문이 생긴 게, 요청이 계속 들어오면 동적으로 maximumPoolSize를 조절할 수 있는 방법이 있나요?
아니면 초과 스레드를 살려두는 TimeUnit 값을 늘릴 수 있는 방법이 있나요?
유연하게 관리할 수 있지 않나 싶어서 찾아보니,

setMaximumPoolSize(int maximumPoolSize)

setKeepAliveTime(long time, TimeUnit unit)

으로 설정할 수 있더군요.

 

이를 활용해 동적으로 관리하는 것인지 궁금합니다!

실무에서는 어떤 방식을 사용하는지 궁금해 질문 남깁니다.

감사합니다!

java객체지향동시성multithreadthread

Answer 2

0

yh님의 프로필 이미지
yh
Instructor

안녕하세요. 김정민님

실무에서 이미 운영중인 서비스의 스레드 풀을 직접 늘리는 방식을 사용하지는 않습니다.

왜냐하면 어차피 서버에서 제공하는 리소스(CPU, 메모리)는 한정이 있기 때문입니다.

실무에서는 성능 테스트를 통해 이런 값들은 처음부터 사용하는 리소스에 맞추어 최적화해두고, 대신에 사용자가 늘어나면 서버 자체를 실시간으로 더 투입하는 방식으로 문제를 해결합니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

김정민님께서 질문하신 Executor 스레드 풀의 동적 관리에 대해 간략히 설명드리겠습니다.

스레드 풀의 사용과 관리에서 중요한 부분 중 하나는 유연성입니다. 말씀해 주신 setMaximumPoolSize(int maximumPoolSize)setKeepAliveTime(long time, TimeUnit unit) 메서드를 이용하면 스레드 풀의 크기와 스레드의 생존 시간을 조절할 수 있습니다.

  1. MaximumPoolSize 조절:

    • setMaximumPoolSize는 스레드 풀의 최대 스레드 수를 설정할 수 있도록 합니다. 요청량이 급증하는 경우 이 값을 늘려서 응답성을 확보할 수 있습니다. 그러나 이는 시스템 리소스를 고려해서 신중히 결정해야 합니다. 너무 많은 스레드를 생성하면 CPU와 메모리 사용량이 급증할 수 있습니다.
  2. KeepAliveTime 조정:

    • setKeepAliveTime은 빈 스레드가 종료되기 전까지 대기하는 시간을 설정합니다. 이 시간을 늘리면 요청이 잠시 끊겼다 다시 많아지는 경우 초과 스레드가 빠르게 처리하도록 유지될 수 있습니다. 그러나 불필요하게 긴 시간을 설정하면 리소스 낭비로 이어질 수 있습니다.

실무에서는 이러한 설정을 정적 값으로만 처리하기보다는, 모니터링자동 조정을 통해 변화하는 요청 패턴에 대응하는 경우가 많습니다. 예를 들어, 트래픽이 항상 예측 가능하지 않기 때문에, 자동 스케일링 기능을 갖춘 솔루션을 사용하거나, 애플리케이션 성능 모니터링(예: Spring Boot Actuator 활용)을 통해 실시간으로 적용할 수 있게 구성하기도 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

kimjungmin89763927's profile image
kimjungmin89763927

asked

Ask a question