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
  • Structured Concurrency

    JAVA 25 SELF
    Nível 58,Aula 0
    Structured Concurrency transforma um conjunto caótico de threads em uma hierarquia controlada de tarefas: você inicia subtarefas em threads virtuais dentro de StructuredTaskScope, espera por elas com join(), trata erros de forma centralizada com throwIfFailed() e obtém resultados com resultNow()/ result(). Vamos analisar as políticas de término ShutdownOnFailure e ShutdownOnSuccess, comparar com CompletableFuture, ver exemplos de um agregador HTTP e erros típicos ao usar concorrência estruturada.
    Disponível
  • Cancelamento de tarefas e timeouts ao longo da pilha

    JAVA 25 SELF
    Nível 58,Aula 1
    Como cancelar corretamente operações longas e bloqueantes em Java: interrupção cooperativa via Thread.interrupt(), cancelamento de tarefas via Future.cancel() e o comportamento de CancellationException, timeouts e cancelamento em CompletableFuture ( orTimeout, completeOnTimeout), concorrência estruturada com StructuredTaskScope, deadline comum (time‑budget) e propagação de timeouts para baixo na pilha (incluindo Instant/ Duration e Scoped Values). Analisamos a prática de trabalhar com IO bloqueante e erros típicos.
    Disponível
  • Sincronizadores de alto nível

    JAVA 25 SELF
    Nível 58,Aula 2
    Na aula, analisamos os sincronizadores de alto nível de java.util.concurrent: CountDownLatch, CyclicBarrier, Phaser e Exchanger. Aprendemos a coordenar o início e o término de tarefas via await()/ countDown(), construir fases reutilizáveis e ações de barreira com await(), gerenciar participantes dinâmicos da “orquestra” com register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() e trocar dados em pares por meio de exchange(). Na prática, implementamos uma largada em massa de workers e um “tick” de jogo, e também abordamos erros típicos: uso único do CountDownLatch, tratamento de BrokenBarrierException e deregister() correto. Em todos os casos, evitamos a dor de wait()/ notify().
    Disponível
  • StampedLock e contadores de baixa contenção

    JAVA 25 SELF
    Nível 58,Aula 3
    Quando ReentrantReadWriteLock e o ReadWriteLock clássico começam a patinar sob alta carga, entra em cena o StampedLock com leitura otimista: a dupla tryOptimisticRead + validate oferece leituras praticamente “de graça” quando as escritas são raras. Vamos analisar os modos de bloqueio, o trabalho com selos, as limitações de reentrância, comparar com ReentrantReadWriteLock e também ver contadores de baixa contenção — LongAdder e LongAccumulator — e por que eles superam o AtomicLong sob contenção. Terminaremos com prática: cache com predominância de leitura e um mini-benchmark.
    Disponível
  • Java Memory Model (JMM)

    JAVA 25 SELF
    Nível 58,Aula 4
    Analisamos as regras de visibilidade e ordenação de operações no Java Memory Model: o que significa a relação happens-before, como e quando ajudam volatile, synchronized, campos finais ( final) e por que sem eles surgem dados “obsoletos”. Mostraremos a publicação segura de objetos, o double-checked locking correto, acesso de baixo nível via VarHandle, o impacto de false sharing e a anotação @Contended, bem como observações práticas sobre Thread.start()/ Thread.join(), Future.get() e microbenchmarks com JMH.
    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