Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Concurrentmap | Synkroniserade Samlingar
Multitrådning i Java

bookUtmaning: Concurrentmap

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 ConcurrentHashMap fö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 ConcurrentHashMap för att lagra data där nyckeln är sidans URL och värdet är antalet besök;
  • Använd metoderna compute() eller merge() för att atomärt uppdatera räknare i ConcurrentHashMap.

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.

Note
Notering

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

Main.java

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

I detta exempel, med användning av den vanliga Map

Main.java

Main.java

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

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you show me the code for the PageVisitCounterImpl class?

What do the incrementVisit() and getVisitCount() methods currently look like?

Can you explain how the Main class is creating and running the threads?

Awesome!

Completion rate improved to 3.33

bookUtmaning: 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 ConcurrentHashMap fö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 ConcurrentHashMap för att lagra data där nyckeln är sidans URL och värdet är antalet besök;
  • Använd metoderna compute() eller merge() för att atomärt uppdatera räknare i ConcurrentHashMap.

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.

Note
Notering

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

Main.java

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

I detta exempel, med användning av den vanliga Map

Main.java

Main.java

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

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6
some-alt