Utmaning: Concurrentmap
Svep för att visa menyn
Uppgift:
Implementering av multitrådat system för registrering av sidvisningar.
Beskrivning:
Det är nödvändigt att skapa ett program för att hålla reda på antalet besök på olika sidor på webbplatsen. Programmet ska fungera korrekt i en multitrådad miljö, där flera trådar samtidigt kan öka besöksräknare för olika sidor.
Krav:
- Använd
ConcurrentHashMapför att lagra data om sidbesök; - Implementera en metod som ökar besöksräknaren för en given sida.
incrementVisit(); - Implementera en metod som returnerar det aktuella antalet besök för en given sida.
getVisitCount(); - Skapa flera trådar som ökar besöksräknarna samtidigt. (Detta är implementerat i klassen
Main, du behöver förstå vad som händer där).
Tips:
- Använd
ConcurrentHashMapför att lagra data där nyckeln är sidans URL och värdet är antalet besök; - Använd metoderna
compute()ellermerge()för att atomärt uppdatera räknare iConcurrentHashMap.
Du behöver slutföra metoderna i klassen PageVisitCounterImpl och därefter köra testerna i klassen PageVisitCounterTest.
När du har slutfört uppgiften korrekt ska alla tester klara sig.
När du har gjort allt korrekt kan du försöka redigera raden där ConcurrentMap deklareras i klassen PageVisitCounterImpl och se vad som händer.
Det vill säga, du behöver ersätta denna rad här med ConcurrentMap-implementeringen.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
I detta exempel, med användning av den vanliga Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal