묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
동시성 처리 관련 스레드 풀 설정 질문
@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명의 유저만 작업한다는 뜻일까요 ? ㅠㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다중 서버 환경에서 동시성 제어
안녕하세요 선생님! 1서버 - 멀티스레드 환경에서는 스프링이 트랜젝션 동시성 제어를 해준다고 이해하였습니다. 멀티서버-멀티스레드 환경에서도 별다른 설정을 해주지 않아도 동시성 제어가 되나요? 예를들어, 1) 재고가 남아있는지 확인(select) 2) 남아있는 경우 주문(insert, update) 하는 경우에 1)을 수행할때 동시에 값을 가져와서 2) 수행을 하게되는 경우 여러개의 서버에서 하나의 db를 같이 쓰면 동시성 제어를 어떻게 할수있나요~?