일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- JVM
- resilience4j
- 파이썬
- 오라클
- oracle
- SQL
- 자바 프로젝트
- jsp
- 문법 정리
- 백준 알고리즘
- auto configure
- hyperledger
- 프로젝트
- 티스토리
- 오라클 디비
- 리눅스
- smart cast
- 자바
- c#
- gradle
- MongoDB
- 운영체제
- dynamic query
- 초대장
- K6
- 알고리즘
- spring
- 유사코드
- 학점
- 파이썬 소스
Archives
- Today
- Total
모종닷컴
ConcurrentHashMap vs collections.synchronizedMap 본문
반응형
먼저 collections.synchronized___이란...
컬렉션(List, Set, Map 등등)을 싱글 스레드 환경에서 사용하다 멀티 스레드 환경으로 전달할 때 컬렉션을 동기화(synchronized) 된 컬렉션으로 리턴해주는 메소드.
->한마디로 여러개의 스레드가 하나의 컬렉션에 접근할 때 생기는 오류를 동기화시킴으로써 해결해주는 메소드이다.
리턴 타입 |
메소드(매개 변수) |
설명 |
List<T> |
synchronizedList(List<T> list) |
List를 동기화된 List로 리턴 |
Map<K,V> |
synchronizedMap(Map<K,V> map) |
Map을 동기화된 Map으로 리턴 |
Set<T> |
synchronizedSet(Set<T> s) |
Set을 동기화된 Set으로 리턴 |
여기서 synchronizedMap은 Map 컬렉션이 멀티 스레드에 안정되게 하기 위한 메소드이다.
하지만, 위와 같이 동기화를 시켰을 때 하나의 스레드가 전체 컬렉션의 모든 자원을 잠금시키기 때문에 전체적으로 빠르게 처리하지는 못한다. 이런 현상을 해결하기 위해 나온 것이 바로 ConcurrentHashMap 이다.
ConcurrentHashMap 은 멀티 스레드에도 마찬가지로 안전하면서도 부분 잠금을 사용하기 때문에 멀티 스레드가 요소를 병렬적으로 처리할 수 있다. 즉, 이용하려는 자원만 잠금하고 나머진 다른 스레드가 접근할 수 있도록 하는 것이다.
반응형
'Programming > JAVA' 카테고리의 다른 글
자바 암호화시키기 (1) | 2018.01.12 |
---|---|
[자바]학점 변환기 파일 (0) | 2018.01.04 |
자바 웹 크롤러 예제 (0) | 2017.10.27 |
자바 설치하기(리눅스) (1) | 2017.08.23 |
MS-SQL(데이터베이스) 연동하기 (0) | 2017.07.07 |