Udfordring: Concurrentmap
Stryg for at vise menuen
Opgave:
Implementering af multitrådet system til registrering af sidebesøg.
Beskrivelse:
Der skal udvikles et program til at føre regnskab over antallet af besøg på forskellige sider på websitet. Programmet skal fungere korrekt i et multitrådet miljø, hvor flere tråde samtidigt kan øge besøgstællere for forskellige sider.
Krav:
- Brug
ConcurrentHashMaptil at gemme data om sidebesøg; - Implementér en metode, der øger besøgstælleren for en given side.
incrementVisit(); - Implementér en metode, der returnerer det aktuelle antal besøg for en given side.
getVisitCount(); - Opret flere tråde, der inkrementerer besøgstællerne samtidigt. (Dette er implementeret i klassen
Main, du skal analysere, hvad der sker der).
Tips:
- Brug
ConcurrentHashMaptil at gemme data, hvor nøglen er URL'en på siden og værdien er besøgstælleren; - Brug metoderne
compute()ellermerge()til atomar opdatering af tællere iConcurrentHashMap.
Du skal færdiggøre metoderne i klassen PageVisitCounterImpl, og derefter køre testene i klassen PageVisitCounterTest.
Når du har fuldført opgaven korrekt, skal alle tests bestås.
Når du har gjort alt korrekt, kan du prøve at redigere linjen, hvor ConcurrentMap erklæres i klassen PageVisitCounterImpl og se, hvad der sker.
Det vil sige, at du skal erstatte denne linje her med implementeringen af ConcurrentMap.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
I dette tilfælde med implementeringen af den sædvanlige Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat