작성
·
123
·
수정됨
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
"초과 스레드가 작업을 처리할 때 마다 시간은 계속 초기화된다" 7:36초에 말씀을 해주셨는데, 한가지 궁금한 점이 생겨 질문 드립니다!
큐가 가득 차서 초과 스레드가 이미 만들어 졌다고 가정한 상황입니다. 이후에 작업이 없어서 큐가 비어있다고 가정을 하겠습니다.
즉, 상황은 큐가 비어있고, 스레드 풀에 기본 스레드 2개, 초과 스레드 2개가 있습니다. 이 때, Executors 에 새로운 작업이 들어오면 이 작업은 무조건 기본 스레드가 초과 스레드 보다 먼저 작업을 수행하게 되나요?
만약, 기본 스레드가 먼저 작업을 무조건 수행하게 된다면 이는 BlockingQueue의 내부 구현인 ReentrantLock 과 Condition 으로 인해 WAITING인 기본 스레드 부터 깨우게 되는 것인가요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. ycllyo님.
스레드풀과 관련하여 궁금하신 부분에 대해 설명드리겠습니다.
기본적으로 Java의 Executor 서비스는 먼저 생성된 스레드, 즉 기본 스레드를 사용하여 작업을 처리하는 경향이 있습니다. 하지만 스레드풀의 특성과 설정에 따라 다를 수 있습니다.
일반적으로 기본 스레드는 작업이 없을 때 idle 상태가 되며, 새로운 작업이 들어오면 대기 상태에서 깨워져 작업을 수행하게 됩니다. 이러한 동작은 내부적으로 사용되는 BlockingQueue
와 이를 제어하는 ReentrantLock
및 Condition
메커니즘을 통해 이루어집니다.
이와 관련된 유사한 질문과 답변이 인프런에 있습니다.
김영한 강사님이 답변하신 쓰레드풀에 관한 질문과 스레드 관리이 이와 관련된 정보를 제공하고 있습니다. 이 게시물들은 스레드풀의 작동 원리와 큐의 작동 방식에 대한 이해를 돕는 내용을 담고 있으므로 참고하시기 바랍니다.
이 답변이 ycllyo님의 이해에 도움이 되길 바라며, 스레드의 처리 방식에 대해 추가적인 궁금증이 있으시다면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.