Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Concurrentmap | Gesynchroniseerde Collecties
Multithreading in Java

bookUitdaging: Concurrentmap

Taak:

Realisatie van een multithreaded systeem voor het bijhouden van websitebezoeken.

Beschrijving:

Het is noodzakelijk om een programma te maken dat het aantal bezoeken aan verschillende pagina's van de website bijhoudt. Het programma moet correct functioneren in een multithreaded omgeving, waarbij meerdere threads gelijktijdig de bezoekstellers voor verschillende pagina's kunnen verhogen.

Vereisten:

  • Gebruik ConcurrentHashMap om gegevens over pagina bezoeken op te slaan;
  • Implementeer een methode die het aantal bezoeken voor een opgegeven pagina verhoogt. incrementVisit();
  • Implementeer een methode die het huidige aantal bezoeken voor een opgegeven pagina retourneert. getVisitCount();
  • Maak meerdere threads aan die gelijktijdig de bezoekaantallen verhogen. (Dit is geïmplementeerd in de klasse Main, je dient te achterhalen wat daar gebeurt).

Tips:

  • Gebruik ConcurrentHashMap om gegevens op te slaan waarbij de sleutel de URL van de pagina is en de waarde het aantal bezoeken;
  • Gebruik de methoden compute() of merge() om tellers atomair bij te werken in ConcurrentHashMap.

Je dient de methoden in de klasse PageVisitCounterImpl te voltooien en vervolgens de tests in de klasse PageVisitCounterTest uit te voeren.

Nadat je de opdracht succesvol hebt afgerond, zouden alle tests moeten slagen.

Note
Opmerking

Nadat je alles correct hebt gedaan, kun je proberen de regel waar ConcurrentMap wordt gedeclareerd in de klasse PageVisitCounterImpl aan te passen en bekijken wat er gebeurt.

Dat wil zeggen, je dient deze regel hier te vervangen door de implementatie van ConcurrentMap.

Main.java

Main.java

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

In dit geval, met de implementatie van de gebruikelijke Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookUitdaging: Concurrentmap

Veeg om het menu te tonen

Taak:

Realisatie van een multithreaded systeem voor het bijhouden van websitebezoeken.

Beschrijving:

Het is noodzakelijk om een programma te maken dat het aantal bezoeken aan verschillende pagina's van de website bijhoudt. Het programma moet correct functioneren in een multithreaded omgeving, waarbij meerdere threads gelijktijdig de bezoekstellers voor verschillende pagina's kunnen verhogen.

Vereisten:

  • Gebruik ConcurrentHashMap om gegevens over pagina bezoeken op te slaan;
  • Implementeer een methode die het aantal bezoeken voor een opgegeven pagina verhoogt. incrementVisit();
  • Implementeer een methode die het huidige aantal bezoeken voor een opgegeven pagina retourneert. getVisitCount();
  • Maak meerdere threads aan die gelijktijdig de bezoekaantallen verhogen. (Dit is geïmplementeerd in de klasse Main, je dient te achterhalen wat daar gebeurt).

Tips:

  • Gebruik ConcurrentHashMap om gegevens op te slaan waarbij de sleutel de URL van de pagina is en de waarde het aantal bezoeken;
  • Gebruik de methoden compute() of merge() om tellers atomair bij te werken in ConcurrentHashMap.

Je dient de methoden in de klasse PageVisitCounterImpl te voltooien en vervolgens de tests in de klasse PageVisitCounterTest uit te voeren.

Nadat je de opdracht succesvol hebt afgerond, zouden alle tests moeten slagen.

Note
Opmerking

Nadat je alles correct hebt gedaan, kun je proberen de regel waar ConcurrentMap wordt gedeclareerd in de klasse PageVisitCounterImpl aan te passen en bekijken wat er gebeurt.

Dat wil zeggen, je dient deze regel hier te vervangen door de implementatie van ConcurrentMap.

Main.java

Main.java

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

In dit geval, met de implementatie van de gebruikelijke Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6
some-alt