Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: ConcurrentMap | Collezioni Sincronizzate
Quizzes & Challenges
Quizzes
Challenges
/
Multithreading in Java

bookSfida: ConcurrentMap

Compito:

Realizzazione di un sistema multithread per la registrazione delle visite al sito.

Descrizione:

È necessario creare un programma per tenere traccia del numero di visite alle diverse pagine del sito. Il programma deve funzionare correttamente in un ambiente multithread, dove più thread possono aumentare contemporaneamente i contatori delle visite per diverse pagine.

Requisiti:

  • Utilizzare ConcurrentHashMap per memorizzare i dati sulle visite alle pagine;
  • Implementare un metodo che incrementa il conteggio delle visite per una determinata pagina. incrementVisit();
  • Implementare un metodo che restituisce il conteggio attuale delle visite per una determinata pagina. getVisitCount();
  • Creare più thread che incrementano contemporaneamente i conteggi delle visite. (Questo è implementato nella classe Main, è necessario capire cosa succede lì).

Suggerimenti:

  • Utilizzare ConcurrentHashMap per memorizzare i dati dove la chiave è l'URL della pagina e il valore è il conteggio delle visite;
  • Utilizzare i metodi compute() o merge() per aggiornare atomicamente i contatori in ConcurrentHashMap.

È necessario completare i metodi nella classe PageVisitCounterImpl, e poi eseguire i test nella classe PageVisitCounterTest.

Dopo aver completato correttamente il compito, tutti i test dovrebbero superare.

Note
Nota

Dopo aver eseguito tutto correttamente, puoi provare a modificare la riga in cui viene dichiarato ConcurrentMap nella classe PageVisitCounterImpl e vedere cosa succede.

Cioè, è necessario sostituire questa riga qui con l'implementazione di ConcurrentMap.

Main.java

Main.java

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

In questo caso, con l'implementazione del consueto Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookSfida: ConcurrentMap

Scorri per mostrare il menu

Compito:

Realizzazione di un sistema multithread per la registrazione delle visite al sito.

Descrizione:

È necessario creare un programma per tenere traccia del numero di visite alle diverse pagine del sito. Il programma deve funzionare correttamente in un ambiente multithread, dove più thread possono aumentare contemporaneamente i contatori delle visite per diverse pagine.

Requisiti:

  • Utilizzare ConcurrentHashMap per memorizzare i dati sulle visite alle pagine;
  • Implementare un metodo che incrementa il conteggio delle visite per una determinata pagina. incrementVisit();
  • Implementare un metodo che restituisce il conteggio attuale delle visite per una determinata pagina. getVisitCount();
  • Creare più thread che incrementano contemporaneamente i conteggi delle visite. (Questo è implementato nella classe Main, è necessario capire cosa succede lì).

Suggerimenti:

  • Utilizzare ConcurrentHashMap per memorizzare i dati dove la chiave è l'URL della pagina e il valore è il conteggio delle visite;
  • Utilizzare i metodi compute() o merge() per aggiornare atomicamente i contatori in ConcurrentHashMap.

È necessario completare i metodi nella classe PageVisitCounterImpl, e poi eseguire i test nella classe PageVisitCounterTest.

Dopo aver completato correttamente il compito, tutti i test dovrebbero superare.

Note
Nota

Dopo aver eseguito tutto correttamente, puoi provare a modificare la riga in cui viene dichiarato ConcurrentMap nella classe PageVisitCounterImpl e vedere cosa succede.

Cioè, è necessario sostituire questa riga qui con l'implementazione di ConcurrentMap.

Main.java

Main.java

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

In questo caso, con l'implementazione del consueto Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6
some-alt