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
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
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

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