Uitdaging: 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
ConcurrentHashMapom 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
ConcurrentHashMapom gegevens op te slaan waarbij de sleutel de URL van de pagina is en de waarde het aantal bezoeken; - Gebruik de methoden
compute()ofmerge()om tellers atomair bij te werken inConcurrentHashMap.
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.
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
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
In dit geval, met de implementatie van de gebruikelijke Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Uitdaging: 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
ConcurrentHashMapom 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
ConcurrentHashMapom gegevens op te slaan waarbij de sleutel de URL van de pagina is en de waarde het aantal bezoeken; - Gebruik de methoden
compute()ofmerge()om tellers atomair bij te werken inConcurrentHashMap.
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.
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
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
In dit geval, met de implementatie van de gebruikelijke Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Bedankt voor je feedback!