Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: ConcurrentMap | Coleções Sincronizadas
Multithreading em Java

bookDesafio: ConcurrentMap

Tarefa:

Implementação de sistema multithreaded para contabilização de visitas ao site.

Descrição:

É necessário criar um programa para manter o controle do número de visitas a diferentes páginas do site. O programa deve funcionar corretamente em um ambiente multithreaded, onde várias threads podem aumentar simultaneamente os contadores de visitas para diferentes páginas.

Requisitos:

  • Utilizar ConcurrentHashMap para armazenar dados sobre as visitas às páginas;
  • Implementar um método que incremente o contador de visitas para uma determinada página. incrementVisit();
  • Implementar um método que retorne o contador de visitas atual para uma determinada página. getVisitCount();
  • Criar múltiplas threads que irão incrementar os contadores de visitas simultaneamente. (Isso está implementado na classe Main, é necessário analisar o funcionamento dela).

Dicas:

  • Utilize ConcurrentHashMap para armazenar dados onde a chave é a URL da página e o valor é o contador de visitas;
  • Utilize os métodos compute() ou merge() para atualizar os contadores atomicamente no ConcurrentHashMap.

É necessário completar os métodos na classe PageVisitCounterImpl e, em seguida, executar os testes na classe PageVisitCounterTest.

Após concluir a tarefa com sucesso, todos os testes devem passar.

Note
Nota

Depois de realizar tudo corretamente, é possível tentar editar a linha onde ConcurrentMap é declarado na classe PageVisitCounterImpl e observar o que acontece.

Ou seja, é necessário substituir esta linha aqui pela implementação de ConcurrentMap.

Main.java

Main.java

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

Neste caso, com a implementação do tradicional Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.33

bookDesafio: ConcurrentMap

Deslize para mostrar o menu

Tarefa:

Implementação de sistema multithreaded para contabilização de visitas ao site.

Descrição:

É necessário criar um programa para manter o controle do número de visitas a diferentes páginas do site. O programa deve funcionar corretamente em um ambiente multithreaded, onde várias threads podem aumentar simultaneamente os contadores de visitas para diferentes páginas.

Requisitos:

  • Utilizar ConcurrentHashMap para armazenar dados sobre as visitas às páginas;
  • Implementar um método que incremente o contador de visitas para uma determinada página. incrementVisit();
  • Implementar um método que retorne o contador de visitas atual para uma determinada página. getVisitCount();
  • Criar múltiplas threads que irão incrementar os contadores de visitas simultaneamente. (Isso está implementado na classe Main, é necessário analisar o funcionamento dela).

Dicas:

  • Utilize ConcurrentHashMap para armazenar dados onde a chave é a URL da página e o valor é o contador de visitas;
  • Utilize os métodos compute() ou merge() para atualizar os contadores atomicamente no ConcurrentHashMap.

É necessário completar os métodos na classe PageVisitCounterImpl e, em seguida, executar os testes na classe PageVisitCounterTest.

Após concluir a tarefa com sucesso, todos os testes devem passar.

Note
Nota

Depois de realizar tudo corretamente, é possível tentar editar a linha onde ConcurrentMap é declarado na classe PageVisitCounterImpl e observar o que acontece.

Ou seja, é necessário substituir esta linha aqui pela implementação de ConcurrentMap.

Main.java

Main.java

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

Neste caso, com a implementação do tradicional Map

Main.java

Main.java

copy
1
private final Map<String, Integer> visitCounts = new HashMap<>();
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 6
some-alt