Desafio: 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()
oumerge()
para atualizar os contadores atomicamente noConcurrentHashMap
.
É 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.
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
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Neste caso, com a implementação do tradicional Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Desafio: 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()
oumerge()
para atualizar os contadores atomicamente noConcurrentHashMap
.
É 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.
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
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Neste caso, com a implementação do tradicional Map
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Obrigado pelo seu feedback!