CodeGym
Promoção
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
  • Combinando CompletableFuture: thenCombine, allOf, anyOf

    JAVA 25 SELF
    Nível 55,Aula 2
    Como paralelizar tarefas e unir resultados com CompletableFuture: combinação de dois resultados via thenCombine/ thenCombineAsync, espera de um conjunto de tarefas com allOf, reação à resposta mais rápida com anyOf. Vamos analisar as assinaturas, exemplos práticos com supplyAsync, processamento não bloqueante ( thenAccept, thenRun) e também nuances de erros e seu tratamento ( exceptionally, handle, whenComplete). No final — uma tabela compacta de comparação dos métodos.
    Disponível
  • Tratamento de erros em código assíncrono: exceptionally, handle

    JAVA 25 SELF
    Nível 55,Aula 3
    Como capturar e tratar exceções com segurança em cadeias de CompletableFuture: entendemos os papéis de exceptionally (valor de fallback em caso de erro), handle (tratador universal de sucesso/erro) e whenComplete (efeitos colaterais sem alterar o resultado). Vamos discutir por que chamadas diretas a get()/ join() encapsulam a causa em ExecutionException/ CompletionException, como combinar etapas ( thenApply, thenAccept) e quais erros comuns evitar.
    Disponível
  • thenCompose + Executor personalizado + timeouts

    JAVA 25 SELF
    Nível 55,Aula 4
    Como “encadear” corretamente etapas assíncronas em CompletableFuture com thenCompose e quando basta thenApply; como e por que usar um pool de threads próprio via ExecutorService (em vez de ForkJoinPool.commonPool()); como proteger cadeias contra “espera eterna” com orTimeout e completeOnTimeout. No final — um exemplo prático com Executor personalizado, thenCompose e timeout, além de erros típicos e suas soluções.
    Disponível
  • IO assíncrono: AsynchronousFileChannel (NIO2)

    JAVA 25 SELF
    Nível 56,Aula 0
    Nesta aula, analisamos entrada/saída assíncrona (AIO) no Java NIO.2: como ela difere do IO síncrono, como trabalhar com AsynchronousFileChannel, iniciar operações de leitura/gravação via Future e CompletionHandler, e como a escolha do pool de threads ExecutorService influencia. Na prática, veremos a abertura do canal com open, os métodos read/ write, o fluxo de interação e erros comuns.
    Disponível
  • Future, CompletionHandler: tratamento da conclusão de operações

    JAVA 25 SELF
    Nível 56,Aula 1
    Como, em Java, tratar a conclusão de operações assíncronas do NIO2: “promessas” com Future e callbacks com CompletionHandler. Veremos as assinaturas read/ write de AsynchronousFileChannel, a obtenção bloqueante do resultado com get() e a verificação com isDone(), além do tratamento não bloqueante em completed()/ failed(). Vamos mostrar exemplos práticos de leitura/gravação e uma breve comparação das abordagens.
    Disponível
  • Processamento assíncrono de arquivos de texto

    JAVA 25 SELF
    Nível 56,Aula 2
    Praticamos E/S assíncrona em Java: lemos grandes arquivos de texto em blocos no ByteBuffer via AsynchronousFileChannel, convertendo bytes em caracteres corretamente com CharsetDecoder, e gravamos os dados de volta de forma assíncrona (via Future ou CompletionHandler). Analisamos o problema da “quebra” de caracteres multibyte (por exemplo, "UTF-8"), contagem de linhas em tempo real, escolha de codificações e erros típicos ao trabalhar com buffers e canais.
    Disponível
  • Tratamento de erros em IO assíncrono e cancelamento de operações

    JAVA 25 SELF
    Nível 56,Aula 3
    Como capturar e tratar erros corretamente em I/O assíncrono no Java: callbacks CompletionHandler com os métodos completed/ failed, registro de logs e notificações. Examinamos o cancelamento de operações via Future e cancel( boolean), as consequências para get() e CancellationException, além de recomendações práticas: try-with-resources, sincronização com CountDownLatch/ CompletableFuture e liberação de recursos.
    Disponível
  • Análise de erros ao trabalhar com arquivos de forma assíncrona

    JAVA 25 SELF
    Nível 56,Aula 4
    Análise prática dos pontos problemáticos ao trabalhar com E/S de arquivos assíncrona no Java NIO: gerenciamento correto de buffers ByteBuffer (propriedades position/ limit, chamadas flip(), clear(), compact()), condições de corrida em operações paralelas com AsynchronousFileChannel, fechamento de recursos ( channel.close(), try-with-resources), tratamento de erros em CompletionHandler (método failed(...)), controle do ciclo de vida das operações via Future<Integer> e sincronização com CountDownLatch, manuseio correto de codificações de caracteres por meio de CharsetDecoder, além da escolha de um pool de threads adequado com ExecutorService.
    Disponível
  • Threads versus threads virtuais: diferenças e vantagens

    JAVA 25 SELF
    Nível 57,Aula 0
    Vamos analisar em que os threads de plataforma diferem dos virtuais: como funciona o modelo “ Platform Thread → SO” e por que ele é pesado, o que muda com threads virtuais ( Virtual Thread) sobre carrier threads, e como isso traz escalabilidade sem “espaguete” reativo. Veremos na prática com Thread.ofVirtual(), compararemos o comportamento para tarefas I/O‑bound e CPU‑bound, tocaremos na compatibilidade (chamadas bloqueantes como InputStream.read, Socket.accept) e erros típicos (sincronizações antigas, expectativa de “aceleração mágica”).
    Disponível
  • Criação de threads virtuais: Thread.ofVirtual().start()

    JAVA 25 SELF
    Nível 57,Aula 1
    Prática com threads virtuais do Java 21: em que elas diferem das threads de plataforma, como iniciar via Thread.startVirtualThread(...) e Thread.ofVirtual().start(...), quando ainda faz sentido usar new Thread(...) ou Thread.ofPlatform(), e como executar tarefas em massa com Executors.newVirtualThreadPerTaskExecutor(). Vamos ver a espera de término com join(), o tratamento de erros com Future e ExecutionException, bem como erros comuns ao usar Virtual Threads.
    Disponível
  • Escalabilidade e desempenho de Virtual Threads

    JAVA 25 SELF
    Nível 57,Aula 2
    Comparação prática entre threads de plataforma Thread e threads virtuais do Java 21: como a JVM, graças aos “ portadores” (carrier threads), executa centenas de milhares de tarefas com uso mínimo de memória, onde os threads virtuais brilham (I/O-bound) e onde não (CPU-bound). Vamos analisar limitações ( synchronized, bloqueios nativos), melhores práticas ( Executors.newVirtualThreadPerTaskExecutor()), monitoramento via JVisualVM e Java Flight Recorder, bem como erros típicos ao migrar para Virtual Threads.
    Disponível
  • Uso de Executor com threads virtuais

    JAVA 25 SELF
    Nível 57,Aula 3
    Vamos analisar como executar uma tarefa em uma thread virtual com Executors.newVirtualThreadPerTaskExecutor() (Java 21), em que isso difere dos pools clássicos ( newFixedThreadPool, newCachedThreadPool), como encerrar corretamente via shutdown() e awaitTermination(...), obter resultados de tarefas por meio de Future e onde as threads virtuais trazem o maior ganho (I/O em massa, servidores web, testes de carga). No final — erros típicos e nuances.
    Disponível
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
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