동시성 처리 관련 스레드 풀 설정 질문
320
작성한 질문수 8
@Test
@DisplayName("쿠폰 여러 명 발급")
void 쿠폰_여러_명_발급() throws InterruptedException {
int threadCount = 1000;
ExecutorService executorService = Executors.newFixedThreadPool(32);
CountDownLatch latch = new CountDownLatch(threadCount);
for (int i = 0; i < threadCount; i++) {
final int threadNumber = i + 1;
Integer key = i;
executorService.submit(() -> {
try {
couponService.issueCoupon(param, usersMap.get(key));
} catch (PessimisticLockingFailureException e) {
....
}쿠폰 발급 동시성 처리 관련해서 테스트 코드 작성 간 궁금한 점이 있어서 질문을 올립니다.
구글링해서 작성해봤는데, 제가 이해하는 게 맞나 싶어서요...
Executors.newFixedThreadPool(32)
이렇게 설정해주면, 32 개의 고정된 스레드 풀을 생성한다는 것이고
1,000 명의 유저가 해당 스레드 풀이 나눠서 작업이 수행된다는 것인가요 ?
그러니까 하나의 스레드에서 약 31명의 유저를 담당한다는 뜻일까요 ?
아니면 순차적으로 1,000 명의 유저를 하나의 스레드에 한 명씩 배치하여 작업하는 것이고,
실질적으로 한 순간에 32명의 유저만 작업한다는 뜻일까요 ? ㅠㅠㅠ
답변 1
2
안녕하세요, 인프런 AI 인턴입니다.
Executors.newFixedThreadPool(32)를 사용하여 설정해주면, 말씀하신 것처럼 32개의 스레드 풀을 생성합니다. 이것은 동시에 최대 32개의 스레드가 작업을 수행할 수 있다는 의미입니다. 따라서 1,000 명의 유저 작업이 이 스레드 풀에 제출되면, 한 번에 최대 32개의 작업이 병렬로 실행될 수 있습니다. 나머지 작업들은 스레드 풀의 작업 큐에서 대기 상태로 있게 됩니다. 그리고 실행 중인 스레드가 작업을 완료하면, 대기 중인 작업 중 하나가 새로 실행되는 방식입니다.
즉, 한 순간에 작업을 수행할 수 있는 유저는 최대 32명이며, 각 스레드는 순차적으로 1,000명의 유저 작업을 처리하지만 동시에 처리되는 작업 수는 고정 스레드 풀 크기(여기서는 32개)에 의해 결정됩니다.
모코코님의 이해가 맞으시며, 마지막 설명이 실제 작업 처리 방식과 일치합니다. 한 스레드에서 31명의 유저를 담당한다기보다는, 동시에 최대 32개의 작업이 실행되고, 실행이 완료된 스레드는 새로운 작업을 수행하는 방식입니다.
영상 다운로드는 안되나요?
0
6
0
IntelliJ IDEA 체험 만료
0
9
1
부하 테스트 시 설정 관련 질문드립니다
1
21
1
HelloSpringApplication.java 클래스 실행 오류
0
11
1
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
20
1
예외처리 3강 문의
0
24
1
챌린지 시작일 문의
0
34
0
26년2회 실기기출은 언제쯤...
0
52
2
네이버 API | '검색 - 책' API 제공 중단
0
40
2
ArticleReadService 관련 질문
0
28
1
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
68
1
이론 공부법 요약본 버전 업데이트 문의
0
35
2
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
48
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
23
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
46
2
장치 의존성과 CSR
0
36
1
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
31
1
[영한님]Spring Boot 및 프로젝트 생성
0
55
2
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
79
2
리뉴얼 시기
0
48
2
스크립트에 대해 질문 있습니다.
1
59
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
71
1
조건 검색 질문
0
40
1
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
55
3





