[Java] Map의 computeIfAbsent()과 computeIfPresent() 메서드
·
Java & Spring
1️⃣ 들어가며ConcurrentHashMap을 사용할 때 get과 put만 쓰고 있다면?실제로는 더 안전하고 효율적인 방법이 있다: 바로 computeIfAbsent, computeIfPresent이 글에서는 이 메서드들이 왜 동시성 환경에서 필수적인지 설명한다📌 미리 읽으면 이해가 편해요!아래 블로그 글에서 ConcurrentHashMap의 기본 개념과 동작 원리를 먼저 살펴보는 것을 추천합니다:https://20s-hoon.tistory.com/166 [Java] Java의 ConcurrentHashMap 정리1️⃣ ConcurrentHashMap이란?Java에서 멀티스레드 환경을 다루다 보면, 여러 스레드가 동시에 하나의 Map에 접근하는 상황이 자주 발생한다. 이때 단순히 HashMap을 사용..
[Java & Spring] HashMap vs ConcurrentHashMap, 실습으로 알아보는 차이
·
Java & Spring
1️⃣ 들어가며멀티스레드 환경에서 데이터를 안전하게 공유하기 위해 어떤 Map을 사용해야 할까?이전에 작성한 글 🔗ConcurrentHashMap 정리을 먼저 읽어보면,ConcurrentHashMap이 어떤 자료구조이고 왜 필요한지를 이론적으로 이해하는 데 도움이 된다. 이번 글에서는 그 내용을 실습을 통해 직접 확인해보려 한다.같은 코드, 같은 로직에서 Map만 HashMap으로 바꿨을 때 무슨 일이 벌어지는지 테스트를 통해 명확하게 보여줄 것이다.🧩 실습 목표ConcurrentHashMap을 사용한 경우와HashMap을 사용한 경우를 비교하여멀티스레드 환경에서 어떤 문제가 발생하는지를 실질적으로 검증한다단순히 "thread-safe하지 않다"는 말로는 와닿지 않는 부분을, 100개의 쓰레드가 동시..
[Java] Java의 ConcurrentHashMap 정리
·
Java & Spring
1️⃣ ConcurrentHashMap이란?Java에서 멀티스레드 환경을 다루다 보면, 여러 스레드가 동시에 하나의 Map에 접근하는 상황이 자주 발생한다. 이때 단순히 HashMap을 사용할 경우, 데이터 충돌이나 예기치 못한 동작이 발생할 수 있다. 그 이유는 HashMap이 기본적으로 thread-safe 하지 않기 때문이다. 이 문제를 해결하기 위해 등장한 것이 ConcurrentHashMap이다. ConcurrentHashMap은 java.util.concurrent 패키지에 포함되어 있으며, 멀티스레드 환경에서 안전하게 데이터를 읽고 쓸 수 있도록 설계된 Map 구현체이다. 기존의 Hashtable보다 더 효율적이고, Collections.synchronizedMap보다 세밀한 동기화를 제공한..