Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Concurrentmap | Colecciones Sincronizadas
Multithreading en Java

bookDesafío: Concurrentmap

Tarea:

Implementación de un sistema multihilo para el registro de visitas a sitios web.

Descripción:

Es necesario crear un programa para llevar el registro del número de visitas a diferentes páginas del sitio. El programa debe funcionar correctamente en un entorno multihilo, donde varios hilos pueden incrementar simultáneamente los contadores de visitas para diferentes páginas.

Requisitos:

  • Utilizar ConcurrentHashMap para almacenar los datos sobre las visitas a páginas;
  • Implementar un método que incremente el contador de visitas para una página dada. incrementVisit();
  • Implementar un método que devuelva el contador de visitas actual para una página dada. getVisitCount();
  • Crear múltiples hilos que incrementen los contadores de visitas simultáneamente. (Esto se implementa en la clase Main, es necesario analizar su funcionamiento).

Sugerencias:

  • Utilizar ConcurrentHashMap para almacenar los datos donde la clave es la URL de la página y el valor es el contador de visitas;
  • Utilizar los métodos compute() o merge() para actualizar los contadores atómicamente en ConcurrentHashMap.

Es necesario completar los métodos en la clase PageVisitCounterImpl, y luego ejecutar las pruebas en la clase PageVisitCounterTest.

Después de completar la tarea correctamente, todas las pruebas deberían pasar.

Note
Nota

Después de realizar todo correctamente, se puede intentar editar la línea donde se declara ConcurrentMap en la clase PageVisitCounterImpl y observar qué sucede.

Es decir, es necesario reemplazar esta línea aquí con la implementación de ConcurrentMap.

Main.java

Main.java

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

En este caso, con la implementación del habitual Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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

bookDesafío: Concurrentmap

Desliza para mostrar el menú

Tarea:

Implementación de un sistema multihilo para el registro de visitas a sitios web.

Descripción:

Es necesario crear un programa para llevar el registro del número de visitas a diferentes páginas del sitio. El programa debe funcionar correctamente en un entorno multihilo, donde varios hilos pueden incrementar simultáneamente los contadores de visitas para diferentes páginas.

Requisitos:

  • Utilizar ConcurrentHashMap para almacenar los datos sobre las visitas a páginas;
  • Implementar un método que incremente el contador de visitas para una página dada. incrementVisit();
  • Implementar un método que devuelva el contador de visitas actual para una página dada. getVisitCount();
  • Crear múltiples hilos que incrementen los contadores de visitas simultáneamente. (Esto se implementa en la clase Main, es necesario analizar su funcionamiento).

Sugerencias:

  • Utilizar ConcurrentHashMap para almacenar los datos donde la clave es la URL de la página y el valor es el contador de visitas;
  • Utilizar los métodos compute() o merge() para actualizar los contadores atómicamente en ConcurrentHashMap.

Es necesario completar los métodos en la clase PageVisitCounterImpl, y luego ejecutar las pruebas en la clase PageVisitCounterTest.

Después de completar la tarea correctamente, todas las pruebas deberían pasar.

Note
Nota

Después de realizar todo correctamente, se puede intentar editar la línea donde se declara ConcurrentMap en la clase PageVisitCounterImpl y observar qué sucede.

Es decir, es necesario reemplazar esta línea aquí con la implementación de ConcurrentMap.

Main.java

Main.java

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

En este caso, con la implementación del habitual Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 6
some-alt