Java) Thread Synchronization(동기화)
Synchronization (동기화)
일반적으로 thread에서 많이 사용한다. 이유는 값을 동기화하기 위해서이다.
그럼 동기화란 무엇인가?
데이타를 여러 thread가 공유해서 쓸 경우 즉 collection data (list, array, vector 등등)
먼저 하나의 thread가 그 데이타를 사용중일 경우 lock 을 걸어둔다.
먼저 실행한 thread가 끝난 다음에야 다른 thread가 그 데이타를 사용할수 있다. 이렇게 하므로써 모든 thread는 같은 값을 볼수 있다.
물론 동기화를 많이 사용하면 속도가 느려지기는 한다. 대기 시간이 존재하므로 실행속도에 영향을 준다.
그러므로 꼭 필요한 경우에만 사용하는 것이 좋다.
Collection 데이타 중에는 synchronization 기능을 포함한 것들도 있다. 그러므로 잘 구분해서 사용하는 것이 좋다.
일반적으로 thread에서 많이 사용한다. 이유는 값을 동기화하기 위해서이다.
그럼 동기화란 무엇인가?
데이타를 여러 thread가 공유해서 쓸 경우 즉 collection data (list, array, vector 등등)
먼저 하나의 thread가 그 데이타를 사용중일 경우 lock 을 걸어둔다.
먼저 실행한 thread가 끝난 다음에야 다른 thread가 그 데이타를 사용할수 있다. 이렇게 하므로써 모든 thread는 같은 값을 볼수 있다.
물론 동기화를 많이 사용하면 속도가 느려지기는 한다. 대기 시간이 존재하므로 실행속도에 영향을 준다.
그러므로 꼭 필요한 경우에만 사용하는 것이 좋다.
Collection 데이타 중에는 synchronization 기능을 포함한 것들도 있다. 그러므로 잘 구분해서 사용하는 것이 좋다.
List Interface | |
ArrayList | 상대적으로 빠르고 요소에 대해 순차적으로 접근할수 있다 |
Vector | ArrayList의 이전 버전이며 모든 메소드가 동기화 되어 있음 |
LinkedList | 순서가 변경되는 경우 노드 링트만 변경하면 되므로 삽입, 삭제가 빈번한 경우에 빠른 속도를 보임 |
Set Interface | |
HashSet | 빠른 접근 속도를 가지고 있으나 순서를 예측할 수 없음 |
LinkedHashSet | 추가된 순서대로 접근 가능 |
TreeSet | 정렬 방법을 지정할 수 있음 |
Map Interface | |
HashMap | 중복을 허용하지 않고 순서를 보장하지 않으며 null 값을 허용함 |
Hashtable | HashMap 보다는 느리지만 동기화를 지원하며 null값을 허용하지 않음 |
TreeMap | 정렬된 순서대로 key / Value를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬을 진행하므로 상대적으로 시간이 오래걸림 |
LinkedHashMap | HashMap과 기본적으로 동일하지만 입력한 순서댈대로 접근이 가능 |
댓글
댓글 쓰기