Défi : ConcurrentMap
Tâche :
Réalisation d’un système multithread de comptabilisation des visites de site.
Description :
Il est nécessaire de créer un programme permettant de suivre le nombre de visites sur différentes pages du site. Le programme doit fonctionner correctement dans un environnement multithread, où plusieurs threads peuvent simultanément augmenter les compteurs de visites pour différentes pages.
Exigences :
- Utiliser
ConcurrentHashMappour stocker les données concernant les visites de pages ; - Implémenter une méthode qui incrémente le compteur de visites pour une page donnée :
incrementVisit(); - Implémenter une méthode qui retourne le nombre actuel de visites pour une page donnée :
getVisitCount(); - Créer plusieurs threads qui vont incrémenter simultanément les compteurs de visites. (Ceci est implémenté dans la classe
Main, il faut analyser ce qui s’y passe).
Conseils :
- Utiliser
ConcurrentHashMappour stocker les données où la clé est l’URL de la page et la valeur est le compteur de visites ; - Utiliser les méthodes
compute()oumerge()pour mettre à jour les compteurs de façon atomique dans leConcurrentHashMap.
Vous devez compléter les méthodes dans la classe PageVisitCounterImpl, puis exécuter les tests dans la classe PageVisitCounterTest.
Après avoir terminé la tâche avec succès, tous les tests devraient réussir.
Après avoir tout fait correctement, vous pouvez essayer de modifier la ligne où ConcurrentMap est déclarée dans la classe PageVisitCounterImpl et observer le résultat.
C'est-à-dire, il faut remplacer cette ligne ici par l'implémentation de ConcurrentMap.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Dans ce cas, avec l’implémentation de la Map classique
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Défi : ConcurrentMap
Glissez pour afficher le menu
Tâche :
Réalisation d’un système multithread de comptabilisation des visites de site.
Description :
Il est nécessaire de créer un programme permettant de suivre le nombre de visites sur différentes pages du site. Le programme doit fonctionner correctement dans un environnement multithread, où plusieurs threads peuvent simultanément augmenter les compteurs de visites pour différentes pages.
Exigences :
- Utiliser
ConcurrentHashMappour stocker les données concernant les visites de pages ; - Implémenter une méthode qui incrémente le compteur de visites pour une page donnée :
incrementVisit(); - Implémenter une méthode qui retourne le nombre actuel de visites pour une page donnée :
getVisitCount(); - Créer plusieurs threads qui vont incrémenter simultanément les compteurs de visites. (Ceci est implémenté dans la classe
Main, il faut analyser ce qui s’y passe).
Conseils :
- Utiliser
ConcurrentHashMappour stocker les données où la clé est l’URL de la page et la valeur est le compteur de visites ; - Utiliser les méthodes
compute()oumerge()pour mettre à jour les compteurs de façon atomique dans leConcurrentHashMap.
Vous devez compléter les méthodes dans la classe PageVisitCounterImpl, puis exécuter les tests dans la classe PageVisitCounterTest.
Après avoir terminé la tâche avec succès, tous les tests devraient réussir.
Après avoir tout fait correctement, vous pouvez essayer de modifier la ligne où ConcurrentMap est déclarée dans la classe PageVisitCounterImpl et observer le résultat.
C'est-à-dire, il faut remplacer cette ligne ici par l'implémentation de ConcurrentMap.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Dans ce cas, avec l’implémentation de la Map classique
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Merci pour vos commentaires !