Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa bản đồ băm đồng thời và bản đồ băm đồng bộ hóa trong Java

Concurrent Hashmap là một lớp đã được giới thiệu trong jdk1.5. Bản đồ băm đồng thời chỉ áp dụng khóa ở cấp nhóm được gọi là phân mảnh trong khi thêm hoặc cập nhật bản đồ. Vì vậy, một bản đồ băm đồng thời cho phép thao tác đọc và ghi đồng thời vào bản đồ.

Bản đồ băm đồng bộ hóa (Collection.syncronizedHashMap ()) là một phương thức của khuôn khổ Bộ sưu tập. Phương pháp này áp dụng một khóa trên toàn bộ bộ sưu tập. Vì vậy, nếu một luồng đang truy cập vào bản đồ thì không luồng nào khác có thể truy cập vào cùng một bản đồ.

Sr. Không. Phím Bản đồ băm đồng thời Bản đồ băm được đồng bộ hóa
1
Triển khai
Đây là một lớp thực hiện một bản đồ băm đồng thời và giao diện có thể tuần tự hóa.
Nó là một phương thức trong lớp Collection.
2
Cơ chế khóa
Khóa phần
Khóa toàn bộ bản đồ.
3
Hiệu suất
Bản đồ băm đồng thời cho phép đọc và ghi đồng thời. Vì vậy, hiệu suất tương đối tốt hơn so với một bản đồ đồng bộ.
Nhiều luồng không thể truy cập bản đồ đồng thời. Vì vậy, hiệu suất tương đối kém hơn một bản đồ băm đồng thời.
4
Phím rỗng
Nó không cho phép null làm khóa hoặc giá trị.
Nó cho phép null làm khóa.
5
Ngoại lệ sửa đổi đồng thời
Nó không đưa ra ngoại lệ sửa đổi đồng thời.
Trả về trình lặp lại bằng cách đồng bộ hóa bản đồ ném ngoại lệ sửa đổi đồng thời

Ví dụ về Bản đồ đồng bộ hóa

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);
   }
}

Ví dụ về 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);
   }
}