ConcurrentHashMap 2

ReentrantLock 락 제어

Java에서 멀티스레드 환경을 다루다 보면, 가장 먼저 떠올리는 동기화 방식은 synchronized이다.하지만 실무에서는 synchronized만으로 해결할 수 없는 더 세밀한 락 제어가 필요한 경우가 많고,이때 선택하게 되는 도구가 바로 ReentrantLock이다. 단순한 전역 락이 아니라 자원별 락이 필요하다.이때 사용할 수 있는 패턴 중 하나가 ConcurrentMap + ReentrantLock 기반의 동적 락 관리 기법이다. 1. ReentrantLock이란ReentrantLock은 Java의 java.util.concurrent.locks 패키지에서 제공하는 명시적 락(Explicit Lock)이다.synchronized가 자동으로 락을 걸고 해제하는 구조라면, ReentrantLock은 ..

IT/JAVA 2025.12.06

ConcurrentHashMap – 멀티스레드 환경에서 안전하게 Map 사용하기

Java에서 HashMap은 단일 스레드에서는 빠르게 작동하지만, 멀티스레드 환경에서는 안전하지 않다.여러 스레드가 동시에 put()이나 get()을 호출하면 데이터 손상, ConcurrentModificationException, 무한 루프 같은 심각한 문제가 발생할 수 있다. HashMap의 멀티스레드 한계Map map = new HashMap();스레드 간 동기화가 없기 때문에 동시 접근 시 데이터 충돌 가능성이 있다최악의 경우 Iterator 사용 중 ConcurrentModificationException이나 무한 루프도 일어난다. ConcurrentHashMap – 안전하고 빠른 멀티스레드 Map스레드 안전(Thread-safe): 여러 스레드가 동시에 접근해도 안전높은 병렬성: 내부적으로 버..

IT/JAVA 2025.07.24
반응형