V tomto kurzu se seznámíme s rozhraním Java ConcurrentMap a jeho metodami.
ConcurrentMap
Rozhraní sbírek rámce Java poskytuje thread-safe mapu. To znamená, že více vláken může přistupovat k mapě najednou, aniž by to ovlivnilo konzistenci záznamů na mapě.
ConcurrentMap
je známá jako synchronizovaná mapa.
Rozšiřuje rozhraní mapy.
Třída, která implementuje ConcurrentMap
Protože ConcurrentMap
je to rozhraní, nemůžeme z něj vytvářet objekty.
Aby bylo možné používat funkce ConcurrentMap
rozhraní, musíme použít třídu, ConcurrentHashMap
která jej implementuje.
Jak používat ConcurrentMap?
Chcete-li použít ConcurrentMap
, musíme java.util.concurrent.ConcurrentMap
nejprve importovat balíček. Jakmile importujeme balíček, můžeme vytvořit souběžnou mapu následujícím způsobem.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
Ve výše uvedeném kódu jsme vytvořili souběžnou mapu pojmenovanou čísla.
Tady,
- Klíč - jedinečný identifikátor používaný k přidružení každého prvku (hodnoty) na mapě
- Hodnota - prvky spojené s klíči na mapě
Metody ConcurrentMap
ConcurrentMap
Rozhraní zahrnuje všechny metody Map
rozhraní. Je to proto, že Map
je super rozhraní ConcurrentMap
rozhraní.
Kromě všech těchto metod jsou zde i metody specifické pro ConcurrentMap
rozhraní.
- putIfAbsent () - Vloží zadaný klíč / hodnotu do mapy, pokud zadaný klíč již není přidružen k žádné hodnotě.
- compute () - Vypočítá položku (mapování klíče / hodnoty) pro zadaný klíč a jeho dříve namapovanou hodnotu.
- computeIfAbsent () - Vypočítá hodnotu pomocí zadané funkce pro zadaný klíč, pokud klíč již není mapován s žádnou hodnotou.
- computeIfPresent () - Vypočítá novou položku (mapování klíč / hodnota) pro zadaný klíč, pokud je klíč již mapován se zadanou hodnotou.
- forEach () - Přístup ke všem položkám mapy a provádění zadaných akcí.
- merge () - Sloučí novou zadanou hodnotu se starou hodnotou zadaného klíče, pokud je klíč již namapován na určitou hodnotu. Pokud klíč ještě není mapován, metoda jednoduše přidruží zadanou hodnotu k našemu klíči.
Další informace najdete na webu Java ConcurrentMap (oficiální dokumentace prostředí Java).
Implementace ConcurrentMap v 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); ) )
Výstup
ConcurrentMap: (Jeden = 1, Dva = 2, Tři = 3) Přístupná hodnota: 1 Odstraněná hodnota: 2
Další informace ConcurrentHashMap
najdete na webu Java ConcurrentHashMap.