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를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬을 진행하므로 상대적으로 시간이 오래걸림 Linke...