Trong hướng dẫn này, chúng ta sẽ tìm hiểu về giao diện Java ConcurrentMap và các phương thức của nó.
Các ConcurrentMap
giao diện của khuôn khổ bộ sưu tập Java cung cấp một bản đồ thread-safe. Có nghĩa là, nhiều luồng có thể truy cập bản đồ cùng một lúc mà không ảnh hưởng đến tính nhất quán của các mục trong bản đồ.
ConcurrentMap
được biết đến như một bản đồ đồng bộ.
Nó mở rộng giao diện Bản đồ.
Lớp triển khai Bản đồ đồng thời
Vì ConcurrentMap
là một giao diện nên chúng ta không thể tạo các đối tượng từ nó.
Để sử dụng các chức năng của ConcurrentMap
giao diện, chúng ta cần sử dụng lớp ConcurrentHashMap
triển khai nó.
Làm thế nào để sử dụng ConcurrentMap?
Để sử dụng ConcurrentMap
, chúng ta phải nhập java.util.concurrent.ConcurrentMap
gói trước. Sau khi chúng tôi nhập gói, đây là cách chúng tôi có thể tạo một bản đồ đồng thời.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
Trong đoạn mã trên, chúng ta đã tạo một bản đồ đồng thời có tên là các số.
Đây,
- Khóa - một số nhận dạng duy nhất được sử dụng để liên kết từng phần tử (giá trị) trong bản đồ
- Giá trị - các yếu tố được liên kết bởi các khóa trong bản đồ
Phương pháp Bản đồ đồng thời
Các ConcurrentMap
giao diện bao gồm tất cả các phương pháp của Map
giao diện. Đó là bởi vì Map
là siêu giao diện của ConcurrentMap
giao diện.
Bên cạnh tất cả các phương pháp đó, đây là các phương thức dành riêng cho ConcurrentMap
giao diện.
- putIfAbsent () - Chèn khóa / giá trị được chỉ định vào bản đồ nếu khóa được chỉ định chưa được liên kết với bất kỳ giá trị nào.
- compute () - Tính toán một mục nhập (ánh xạ khóa / giá trị) cho khóa được chỉ định và giá trị được ánh xạ trước đó của nó.
- computeIfAbsent () - Tính giá trị bằng cách sử dụng hàm được chỉ định cho khóa được chỉ định nếu khóa chưa được ánh xạ với bất kỳ giá trị nào.
- computeIfPresent () - Tính toán mục nhập mới (ánh xạ khóa / giá trị) cho khóa được chỉ định nếu khóa đã được ánh xạ với giá trị được chỉ định.
- forEach () - Truy cập tất cả các mục của bản đồ và thực hiện các hành động được chỉ định.
- merge () - Hợp nhất giá trị được chỉ định mới với giá trị cũ của khóa được chỉ định nếu khóa đã được ánh xạ tới một giá trị nhất định. Nếu khóa chưa được ánh xạ, phương thức này chỉ cần liên kết giá trị được chỉ định với khóa của chúng ta.
Để tìm hiểu thêm, hãy truy cập Java ConcurrentMap (tài liệu Java chính thức).
Triển khai ConcurrentMap trong ConcurrentHashMap
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; class Main ( public static void main(String() args) ( // Creating ConcurrentMap using ConcurrentHashMap ConcurrentMap numbers = new ConcurrentHashMap(); // Insert elements to map numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("ConcurrentMap: " + numbers); // Access the value of specified key int value = numbers.get("One"); System.out.println("Accessed Value: " + value); // Remove the value of specified key int removedValue = numbers.remove("Two"); System.out.println("Removed Value: " + removedValue); ) )
Đầu ra
ConcurrentMap: (Một = 1, Hai = 2, Ba = 3) Giá trị được Truy cập: 1 Giá trị Đã Xóa: 2
Để tìm hiểu thêm về ConcurrentHashMap
, hãy truy cập Java ConcurrentHashMap.