← 질문 목록
#72깊이 0

락보다 높은 수준의 도구를 먼저 고르는 이유는?

언어 · 런타임심화동시성

검증된 원자 연산과 대기 정책을 재사용해 경쟁 조건과 교착 위험을 줄이기 때문이다. 작업 성격에 맞는 가장 높은 수준의 도구를 고른다.

  • CompletableFuture비동기 결과 조합
  • ExecutorService실행 정책과 작업 분리
  • BlockingQueue생산자·소비자 조절
  • 동시 컬렉션·원자 변수공유 상태 갱신
  • Lock·동기화 도구임계 구역 제어

공유 맵의 get 뒤 put은 두 번의 연산이라 경쟁할 수 있다. ConcurrentHashMap의 computeIfAbsent처럼 의도를 한 원자 연산으로 표현해야 한다.

AtomicInteger는 한 값의 갱신에는 맞지만 여러 필드 불변식까지 묶지 못한다. 그런 경우 Lock이나 synchronized로 임계 구역을 만든다.

ExecutorService는 작업 제출과 스레드 생명 주기를 분리한다. 큐 용량과 거부 정책을 정하지 않으면 과부하가 메모리 증가로 바뀔 수 있다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

락보다 높은 수준의 도구를 먼저 고르는 이유는?