CodeGym
AI Academy
Promoção
CodeGym University
Aprendizagem
Cursos
Tarefas
Pesquisas & Questionários
Jogos
Ajuda
Cronograma
Comunidade
Usuários
Fórum
Chat
Artigos
Histórias de sucesso
Atividade
Avaliações
Assinaturas
Tema claro

Aulas

  • Avaliações
  • Sobre nós
Iniciar
Comece a aprender
Comece a aprender agora
  • Meu progresso
  • Cursos
  • Mapa da Missão
  • Aulas
  • Deadlock: causas, exemplos, eliminação

    JAVA 25 SELF
    Nível 53,Aula 0
    Nesta aula explicamos o que é o bloqueio mútuo de threads (deadlock) em Java, por que ele acontece e quais são as quatro condições necessárias para ocorrer. Com um exemplo prático usando synchronized mostramos como reproduzir o problema e, em seguida, estudamos estratégias de prevenção: ordem única de aquisição de recursos, uso de ReentrantLock.tryLock com timeout, redução de seções críticas e evitar locks aninhados desnecessários. Mostramos a diagnose via Thread Dump e jstack, como reconhecer os estados BLOCKED/ WAITING, e encerramos com um checklist e erros típicos.
    Disponível
  • Livelock e Starvation: definição, exemplos

    JAVA 25 SELF
    Nível 53,Aula 1
    Analisamos as anomalias de concorrência Livelock e Starvation: em que diferem de Deadlock, como aparecem no código e nos logs. São mostrados exemplos em Java: “trabalhadores educados” (bloqueio vivo) e fome por prioridades e por bloqueios injustos. Aprendemos a detectar o problema (registro em log, Thread dump, VisualVM, Java Mission Control) e a preveni‑lo: atrasos aleatórios antes de nova tentativa ( Thread.sleep), algoritmos não bloqueantes, bloqueios justos via ReentrantLock com o sinalizador fairness ( new ReentrantLock(true)), seções críticas cuidadosas e evitar abusar de setPriority() e synchronized.
    Disponível
  • Coleções thread-safe: ConcurrentHashMap e outras

    JAVA 25 SELF
    Nível 53,Aula 2
    Nesta aula, vamos analisar por que coleções comuns ( ArrayList, HashMap) são perigosas em ambiente multithread e quais alternativas thread-safe o pacote java.util.concurrent oferece: ConcurrentHashMap, CopyOnWriteArrayList, ConcurrentLinkedQueue, estruturas com skip list e BlockingQueue. Discutiremos operações atômicas como merge, putIfAbsent, computeIfAbsent, vamos comparar com Collections.synchronizedMap, e considerar exemplos práticos e erros típicos (iteradores fracamente consistentes, sequências de operações não atômicas etc.).
    Disponível
  • AtomicInteger, AtomicReference: operações atômicas

    JAVA 25 SELF
    Nível 53,Aula 3
    Por que o incremento i ++ não funciona em ambiente multithread, o que são operações atômicas e como o pacote java.util.concurrent.atomic as fornece. Analisamos AtomicInteger e AtomicReference, os métodos incrementAndGet(), compareAndSet(...), o mecanismo interno CAS (Compare-And-Swap), e também quando é melhor escolher synchronized e quando — LongAdder. No final — erros típicos: operações complexas, ABA e a segurança de thread de objetos aninhados.
    Disponível
  • Diagnóstico e depuração de programas multithread

    JAVA 25 SELF
    Nível 53,Aula 4
    Como capturar e ler Thread Dump com jstack, VisualVM e a IDE, reconhecer estados de threads ( RUNNABLE, BLOCKED, WAITING) e encontrar deadlocks. Vamos abordar o monitoramento de threads no Java Mission Control e no Java Flight Recorder, práticas de logging (nomes de threads, entrada/saída de synchronized), minimização de locks, testes de concorrência com CountDownLatch e a análise de um caso real de deadlock. No final — erros típicos e como evitá-los.
    Disponível
Aprender
  • Cadastro
  • Curso de Java
  • Ajuda com Tarefas
  • Preços
  • Sintaxe Java
Comunidade
  • Usuários
  • Artigos
  • Fórum
  • Chat
  • Histórias de sucesso
  • Atividade
  • Programa de afiliados
Empresa
  • Sobre nós
  • Contatos
  • Avaliações
  • Sala de imprensa
  • CodeGym for EDU
  • Perguntas frequentes
  • Suporte
CodeGymCodeGym é um curso online para aprender programação Java do zero. Este curso é uma maneira perfeita de dominar Java para iniciantes. Contém mais de 1.200 tarefas com verificação instantânea e um escopo essencial da teoria dos fundamentos de Java. Para ajudar você a ter sucesso nos estudos, implementamos um conjunto de recursos motivacionais: questionários, projetos de programação, conteúdo sobre aprendizagem eficiente e carreira de desenvolvedor Java.
Siga-nos
Idioma da interface
English Deutsch Español हिन्दी Français
Português
Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programadores se formam, não nascem" © 2026 CodeGym
MastercardVisa
"Programadores se formam, não nascem" © 2026 CodeGym