Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Concurrentmap | Synchroniserede Samlinger
Quizzes & Challenges
Quizzes
Challenges
/
Multitrådning i Java

bookUdfordring: Concurrentmap

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 ConcurrentHashMap til 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 ConcurrentHashMap til at gemme data, hvor nøglen er URL'en på siden og værdien er besøgstælleren;
  • Brug metoderne compute() eller merge() til atomar opdatering af tællere i ConcurrentHashMap.

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.

Note
Bemærk

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

Main.java

copy
1
private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();

I dette tilfælde med implementeringen af den sædvanlige Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.33

bookUdfordring: 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 ConcurrentHashMap til 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 ConcurrentHashMap til at gemme data, hvor nøglen er URL'en på siden og værdien er besøgstælleren;
  • Brug metoderne compute() eller merge() til atomar opdatering af tællere i ConcurrentHashMap.

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.

Note
Bemærk

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

Main.java

copy
1
private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();

I dette tilfælde med implementeringen af den sædvanlige Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6
some-alt