본문으로 바로가기

1. 동기화된 컬렉션

  • 컬렉션 프레임워크의 대부분의 클래스들은 싱글 스레드 환경에서 사용하도록 만들어져 있습니다. (Vector, Hashtable 등 제외)
  • 여러 개의 스레드가 동시에 컬렉션에 접근하게 된다면 의도치 않은 결과를 낼 수 있습니다. (멀티 스레드 환경에서 불안정함)
  • 싱글 스레드 환경에서 멀티 스레드 환경으로 컬렉션을 전달할 필요가 있을 경우를 위해 비동기화된 메서드를 동기화된 메서드로 래핑 하는 메서드 제공
  • 동기화된 컬렉션을 사용할 경우 스레드가 요소를 안전하게 처리할 수 있도록 스레드가 요소를 처리할 때 잠금을 활용해 안전하게 처리합니다. 대신 처리 속도는 빠르지 못합니다.

 

2. 비동기 형태 매핑(synchronizedXXX)

[매핑 메소드]

List<T> synchronizedList(List<T> list) → 동기화된 List 반환 

Map<K,V> synchronizedMap(Map<K,V> map) 동기화된 Map 반환
Set<T> synchronizedSet(Set<T> set) 동기화된 Set 반환

 

[예시]

// List
List<String> list = new ArrayList<>();
List<String> synchronizedList = Collections.synchronizedList(list);

// Map
Map<String, String> map = new HashMap<>();
Map<String, String> synchronizedMap = Collections.synchronizedMap(map);

// Set
Set<String> set = new HashSet<>();
Set<String> synchronizedSet = Collections.synchronizedSet(set);