I denne vejledning lærer vi om Java ConcurrentMap-grænsefladen og dens metoder.
Den ConcurrentMap
grænsefladen af Java kollektioner rammer giver en tråd-safe kortet. Det vil sige, at flere tråde kan få adgang til kortet på en gang uden at påvirke konsistensen af poster på et kort.
ConcurrentMap
er kendt som et synkroniseret kort.
Det udvider kortgrænsefladen.
Klasse, der implementerer ConcurrentMap
Da det ConcurrentMap
er en grænseflade, kan vi ikke oprette objekter ud fra det.
For at bruge funktionerne i ConcurrentMap
grænsefladen er vi nødt til at bruge den klasse, ConcurrentHashMap
der implementerer den.
Hvordan bruges ConcurrentMap?
For at bruge den ConcurrentMap
skal vi først importere java.util.concurrent.ConcurrentMap
pakken. Når vi først har importeret pakken, kan du oprette et samtidig kort her.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
I ovenstående kode har vi oprettet et samtidigt kort med navn.
Her,
- Nøgle - en unik identifikator, der bruges til at knytte hvert element (værdi) til et kort
- Værdi - elementer tilknyttet nøgler på et kort
Metoder til ConcurrentMap
Den ConcurrentMap
grænseflade omfatter alle fremgangsmåderne ifølge Map
grænsefladen. Det er fordi Map
er grænsefladen super ConcurrentMap
interface.
Udover alle disse metoder er her de specifikke metoder til ConcurrentMap
grænsefladen.
- putIfAbsent () - Indsætter den angivne nøgle / værdi på kortet, hvis den angivne nøgle ikke allerede er knyttet til nogen værdi.
- beregne () - Beregner en post (nøgle / værdi kortlægning) for den angivne nøgle og dens tidligere tilknyttede værdi.
- computeIfAbsent () - Beregner en værdi ved hjælp af den angivne funktion for den angivne nøgle, hvis nøglen ikke allerede er kortlagt med nogen værdi.
- computeIfPresent () - Beregner en ny post (nøgle- / værdikortlægning) for den angivne nøgle, hvis nøglen allerede er kortlagt med den angivne værdi.
- forEach () - Få adgang til alle poster på et kort og udfør de angivne handlinger.
- fusionere () - fletter den nye specificerede værdi med den gamle værdi af den angivne nøgle, hvis nøglen allerede er tilknyttet en bestemt værdi. Hvis nøglen ikke allerede er kortlagt, knytter metoden simpelthen den angivne værdi til vores nøgle.
For at lære mere, besøg Java ConcurrentMap (officiel Java-dokumentation).
Implementering af ConcurrentMap i 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); ) )
Produktion
ConcurrentMap: (One = 1, Two = 2, Three = 3) Adgangsværdi: 1 Fjernet værdi: 2
For at lære mere om det ConcurrentHashMap
, besøg Java ConcurrentHashMap.