Concurrent Hashmap은 jdk1.5에서 도입된 클래스입니다. 동시 해시 맵은 맵을 추가하거나 업데이트하는 동안 프래그먼트라는 버킷 수준에서만 잠금을 적용합니다. 따라서 동시 해시 맵은 맵에 대한 동시 읽기 및 쓰기 작업을 허용합니다.
동기화된 해시맵(Collection.syncronizedHashMap())은 컬렉션 프레임워크의 메서드입니다. 이 메서드는 전체 컬렉션에 잠금을 적용합니다. 따라서 한 스레드가 맵에 액세스하는 경우 다른 스레드는 동일한 맵에 액세스할 수 없습니다.
Sr. 아니요. | 키 | 동시 해시 맵 | 동기화된 해시맵 |
---|---|---|---|
1 | 구현 | Concurrent 해시 맵과 직렬화 가능한 인터페이스를 구현하는 클래스입니다. | Collection 클래스의 메소드입니다. |
2 | 잠금 메커니즘 | 부분을 잠급니다. | 전체 지도를 잠급니다. |
3 | 성능 | 동시 해시맵은 동시 읽기 및 쓰기를 허용합니다. 따라서 성능은 동기화된 맵보다 상대적으로 우수합니다. | 여러 스레드가 동시에 지도에 액세스할 수 없습니다. 따라서 성능은 동시 해시 맵보다 상대적으로 낮습니다. |
4 | 널 키 | null을 키나 값으로 허용하지 않습니다. | null을 키로 허용합니다. |
5 | 동시 수정 예외 | 동시 수정 예외를 던지지 않습니다. | 동기화된 맵에 의한 반복자 반환은 동시 수정 예외를 던집니다. |
SynchronizedMap의 예
public class SynchronizedMapExample { public static void main(String[] args) { Map<Integer,String> laptopmap = new HashMap<Integer,String>(); laptopmap.put(1,"IBM"); laptopmap.put(2,"Dell"); laptopmap.put(3,"HCL"); // create a synchronized map Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap); System.out.println("Synchronized map is : "+syncmap); } }
ConcurrentHashMap의 예
public class ConcurrentHashMapExample { public static void main(String[] args) { //ConcurrentHashMap Map<Integer,String> laptopmap = new ConcurrentHashMap<Integer,String>(); laptopmap.put(1,"IBM"); laptopmap.put(2,"Dell"); laptopmap.put(3,"HCL"); System.out.println("ConcurrentHashMap is: "+laptopmap); } }