Trong bài này, chúng ta sẽ tìm hiểu về ConcurrentMap interface trong Java và các hàm của nó.

ConcurrentMap interface của collections framework trong Java cung cấp một map an toàn luồng. Nghĩa là, nhiều luồng có thể truy cập ta map 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 map.

ConcurrentMap được biết đến như một map đồng bộ.

Nó mở rộng map interface.

1. Các class triển khai ConcurrentMap

Vì ConcurrentMap là một interface, 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 interface, chúng ta cần sử dụng class ConcurrentHashMap để triển khai nó.

2. Sử dụng ConcurrentMap như thế nào?

Để sử dụng ConcurrentMap, chúng ta phải import gói java.util.concurrent.ConcurrentMap đầu tiên. Khi đã import xong, chúng ta có thể tạo ConcurrentMap theo cách dưới đây.

// ConcurrentMap implementation by ConcurrentHashMap
CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();

Trong đoạn code trên, chúng ta đã tạo ra một ConcurrentMap có tên là numbers.

Ở đây,




  • key – một code định danh duy nhất được sử dụng để liên kết từng phần tử (value) trong map
  • value – các phần tử được liên kết bởi các key trong map

3. Các hàm của ConcurrentMap

ConcurrentMap interface bao gồm tất cả các hàm của Map Interface. Đó là bởi vì Map là interface cha của ConcurrentMap interface.

Ngoài các hàm đó, dưới đây là các hàm dành riêng cho ConcurrentMap interface.

  • put IfAbsent () – Chèn key / value được chỉ định vào map nếu key được chỉ định chưa được liên kết với bất kỳ value nào.
  • compute () – Tính toán một mục (cặp key / value) cho key được chỉ định và value được liên kết trước đó.
  • compute IfAbsent () – Tính toán một value bằng cách sử dụng hàm được chỉ định cho key được chỉ định nếu key chưa được liên kết với bất kỳ value nào.
  • compute IfPftime () – Tính toán một mục nhập mới (cặp key / value) cho key được chỉ định nếu key đã được liên kết với value được chỉ định.
  • forEach () – Truy cập tất cả các mục của map và thực hiện các thao tác được chỉ định.
  • merge () – Hợp nhất value được chỉ định mới với value cũ của key được chỉ định nếu key đã được liên kết với một value nhất định. Nếu key chưa được liên kết, hàm này sẽ liên kết value được chỉ định với key đó.

Để tìm hiểu thêm, hãy truy cập Java ConcurrentMap (tài liệu Java chính thức) .

4. Triển khai ConcurrentMap trong ConcurrentHashMap

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;

class Main {

    public static void main(String[] args) {
        // Creating ConcurrentMap using ConcurrentHashMap
        ConcurrentMap<String, Integer> 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);
    }
}

kết quả

ConcurrentMap: {One=1, Two=2, Three=3}
Accessed Value: 1
Removed Value: 2

Để tìm hiểu thêm về ConcurrentHashMap, hãy truy cập Java ConcurrentHashMap .