먼저 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
ConcurrentHashMap vs collections.synchronizedMap  (1) 2017.05.17
  1. binny 2017.05.18 19:05

    ㅎㅅㅎ 좋은정보 감사합니당

+ Recent posts