목록2024/02/29 (2)
Coding Planet

ConCurrentHashMap과 HashTable을 공부하면서 경쟁조건과 Lock이 주요 키워드로 등장했다. 스레드를 공부하면서 빈번하게 등장하기 때문에 두 개념 모두 어렴풋이 알고 있긴 하지만 이번 기회에 정리하고 가야겠다. | 경쟁 조건 (Race Condition)과 Lock 경쟁 조건은 멀티 스레드 프로그램에서 두 개 이상의 스레드가 데이터나 자원에 동시에 접근하려고 할 때 발생하는 문제이다. 이러한 상황에서 스레드들의 실행 순서에 따라 프로그램의 결과가 달라질 수 있으며, 이는 데이터의 일관성과 정확성을 해칠 수 있다. 경쟁 조건을 방지하기 위해 동기화 메커니즘(대표적으로 Lock)을 사용하여 스레드들이 자원에 안전하게 접근할 수 있도록 해야한다. Lock은 동시에 여러 스레드가 같은 자원에 ..
HashMap / HashTable / ConCurrentHashMap은 Java의 Map 인터페이스 구현체이다. | HashMap / HashTable / ConCurrentHashMap 비교하기 특징/구현체 HashMap Hashtable ConcurrentHashMap 동기화 (Synchronization) 동기화되지 않음 동기화됨 부분 동기화(세그먼트 락) Null 허용 키와 값 모두에 null 허용 null 허용하지 않음 null 허용하지 않음 성능 빠름 느림 HashMap보다 느리지만, Hashtable보다는 빠름 Iterator fail-fast fail-safe가 아님 fail-safe 멀티 스레드 환경 적합하지 않음(동기화 추가 필요) 적합하지만 성능 저하 적합하며 성능 최적화됨 용도 단..