Kursinhalt
Multithreading in Java
Multithreading in Java
Herausforderung ConcurrentMap
Aufgabe:
Realisierung eines multithreaded Systems zur Erfassung von Seitenbesuchen.
Beschreibung:
Es ist notwendig, ein Programm zu erstellen, um die Anzahl der Besuche auf verschiedenen Seiten der Website zu verfolgen. Das Programm sollte in einer multithreaded Umgebung korrekt arbeiten, in der mehrere Threads gleichzeitig Besuchszähler für verschiedene Seiten erhöhen können.
Anforderungen:
- Verwenden Sie
ConcurrentHashMap
, um Daten über Seitenbesuche zu speichern; - Implementieren Sie eine Methode, die die Besuchszahl für eine gegebene Seite erhöht.
incrementVisit()
; - Implementieren Sie eine Methode, die die aktuelle Besuchszahl für eine gegebene Seite zurückgibt.
getVisitCount()
; - Erstellen Sie mehrere Threads, die die Besuchszahlen gleichzeitig erhöhen. (Dies wird in der
Main
Klasse implementiert, Sie müssen herausfinden, was dort vor sich geht).
Hinweise:
- Verwenden Sie
ConcurrentHashMap
, um Daten zu speichern, wobei der Schlüssel die URL der Seite und der Wert die Besuchszahl ist; - Verwenden Sie
compute()
odermerge()
Methoden, um Zähler atomar zu aktualisieren inConcurrentHashMap
.
Sie müssen die Methoden in der Klasse PageVisitCounterImpl
vervollständigen und dann die Tests in der Klasse PageVisitCounterTest
ausführen.
Nachdem Sie die Aufgabe erfolgreich abgeschlossen haben, sollten alle Tests bestehen.
Hinweis
Nachdem Sie alles korrekt gemacht haben, können Sie versuchen, die Zeile zu bearbeiten, in der
ConcurrentMap
in der KlassePageVisitCounterImpl
deklariert ist, und sehen, was passiert.
Das heißt, Sie müssen diese Zeile hier mit der ConcurrentMap
-Implementierung ersetzen.
Main
private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Bei diesem hier mit der Realisierung des üblichen Map
Main
private final Map<String, Integer> visitCounts = new HashMap<>();
Danke für Ihr Feedback!