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);
'Backend > Java' 카테고리의 다른 글
[Java] 제네릭 사용 이유 (Why do use Generic in Java?) (0) | 2022.02.24 |
---|---|
[Java] 자바 제네릭 API Response 활용하기 (Response DTO) (0) | 2022.02.23 |
[Java] LIFO 스택, FIFO 큐 (Stack, Queue) (0) | 2022.02.11 |
[Java] Map 인터페이스 특징 및 구현체 (HashMap, Hashtable, LinkedHashMap, Properties, TreeMap) (0) | 2022.02.11 |
[Java] Set 인터페이스 특징 및 구현체 (HashSet, LinkedHashSet, TreeSet) (0) | 2022.02.10 |