동기화된 컬렉션
컬렉션 프레임워크의 대부분의 클래스들은 싱글 스레드 환경에서 사용할 수 있도록 설계되어있음
그렇기에 여러 스레드가 동시에 컬렉션에 접근한다면 의도하지 않게 데이터가 변경될 수 있는
불안정한 상태가 된다.
synchronizeList(List<T> list) - list를 동기화된 list로 리턴
synchronizeMap(Map<K, V> map) - map을 동기화된 map으로 리턴
synchronizeSet(Set<T> set) - set을 동기화된 set으로 리턴
ArrayList, HashSet, HashMap이 대표적으로 싱글스레드 기반으로 설계된 컬렉션 클래스인데,
이를 멀티 스레드 환경에서 쓸 수 있도록 컬렉션 프레임워크는 비동기화된 메소드를 동기화된
메소드로 래핑하는 synchronizeXXX( ) 메소를 제공한다.
예제코드
1 2 | // 리스트를 동기화된 리스트로 변환 List<T> list = Collections.synchronizedList(new ArrayList<T>()); | cs |
1 2 | // map를 동기화된 map으로 변환 Map<K,V> map = Collections.synchronizedMap(new HashMap<K,V>()); | cs |
1 2 | // set를 동기화된 set으로 변환 Set<T> set = Collections.synchronizedSet(new HashSet<T>()); | cs |
'Java' 카테고리의 다른 글
JAVA 특징와 OOP (0) | 2017.05.12 |
---|---|
[Reflect]Refletion의 정의와 동적 메소드 호출 (0) | 2017.03.17 |
[람다식]메소드와 생성자 참조 (0) | 2017.03.08 |
[람다식] 클래스 멤버와 로컬변수의 사용 (0) | 2017.02.24 |
[람다식] 타켓타입과 함수적 인터페이스 (0) | 2017.02.24 |