ConcurrentHashMap
Java에서 멀티스레드 환경에서 안전하게 사용할 수 있도록 설계된 해시 기반의 Map.
모든 메서드에 synchronized를 거는 HashMap과 달리 필요한 범위에만 lock을 걸어 성능과 안정성 보장.
import java.util.concurrent.ConcurrentHashMap;
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("apple", 3);
map.put("banana", 5);
int count = map.get("apple");
key - value 구성으로, key와 value 모두 null 불가.
putIfAbsent()
지정한 key에 값이 없을 경우에만 새 값을 저장.
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
map.putIfAbsent("user", "aaaa"); // "user1" key값이 없으면 저장
map.putIfAbsent("user", "bbbb"); // "user1" key값이 있으니 무시
System.out.println(map.get("user")); // aaaa
- key가 존재하지 않으면 → value를 저장하고 null 반환
- key가 존재하면 → 기존 값 반환
computeIfAbsent()
지정한 key에 값이 없을 경우에만 함수 실행.
computeIfAbsent(key, func)
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
// "user" key값이 없으면 함수 실행 → aaaa 저장
map.computeIfAbsent("user", key -> {
return "aaaa";
});
// "user" key값이 있으니 실행되지 않고 무시
map.computeIfAbsent("user", key -> {
return "bbbb";
});
System.out.println(map.get("user")); // aaaa
'Java > 공부공부' 카테고리의 다른 글
| [JAVA] record (java 14 이상) (2) | 2025.06.06 |
|---|---|
| [JAVA] 타입 소거 (Type Erasure) (0) | 2025.04.15 |
| [Java] ObjectMapper (2) TypeReference, 설정메서드, 어노테이션 (0) | 2025.04.10 |
| [Java] ObjectMapper (1) 주요 메서드 (0) | 2025.04.10 |
| [Java] "".equals(null) (equals 메서드) (0) | 2025.03.26 |