CodeGym
Promoción
CodeGym University
Aprendizaje
Cursos
Tareas
Encuestas & Cuestionarios
Juegos
Ayuda
Horario
Comunidad
Usuarios
Foro
Chat
Artículos
Historias de éxito
Actividad
Reseñas
Suscripciones
Tema claro

Lecciones

  • Reseñas
  • Sobre nosotros
Comenzar
Comenzar a aprender
Comienza a aprender ahora
  • Mi progreso
  • Cursos
  • Universidad
  • Mapa de misiones
  • Lecciones
  • Combinación de CompletableFuture: thenCombine, allOf, anyOf

    JAVA 25 SELF
    Nivel 55,Lección 2
    Cómo paralelizar tareas y combinar resultados con CompletableFuture: combinar dos resultados con thenCombine/ thenCombineAsync, esperar a un conjunto de tareas con allOf, reaccionar a la respuesta más rápida con anyOf. Veremos las firmas, ejemplos prácticos con supplyAsync, el procesamiento no bloqueante ( thenAccept, thenRun), así como los matices de los errores y su manejo ( exceptionally, handle, whenComplete). Al final — una tabla compacta de comparación de métodos.
    Disponible
  • Manejo de errores en código asíncrono: exceptionally, handle

    JAVA 25 SELF
    Nivel 55,Lección 3
    Cómo capturar y manejar excepciones de forma segura en cadenas CompletableFuture: analizamos los roles de exceptionally (valor de reserva en caso de error), handle (manejador universal de éxito/error) y whenComplete (acciones colaterales sin cambiar el resultado). Comentaremos por qué la invocación directa de get()/ join() envuelve las causas en ExecutionException/ CompletionException, cómo combinar etapas ( thenApply, thenAccept) y qué errores típicos evitar.
    Disponible
  • thenCompose + Executor personalizado + tiempos de espera

    JAVA 25 SELF
    Nivel 55,Lección 4
    Cómo «encadenar» correctamente los pasos asíncronos en CompletableFuture con thenCompose y cuándo basta con thenApply; cómo y por qué conectar un pool de hilos propio mediante ExecutorService (en lugar de ForkJoinPool.commonPool()); cómo proteger las cadenas de un «esperar para siempre» con orTimeout y completeOnTimeout. Al final — un ejemplo práctico con un Executor personalizado, thenCompose y tiempo de espera, así como errores típicos y sus soluciones.
    Disponible
  • E/S asíncrona: AsynchronousFileChannel (NIO2)

    JAVA 25 SELF
    Nivel 56,Lección 0
    En esta lección analizamos la entrada/salida asíncrona (AIO) en Java NIO.2: en qué se diferencia de la E/S síncrona, cómo trabajar con AsynchronousFileChannel, lanzar operaciones de lectura/escritura mediante Future y CompletionHandler, y cómo influye la elección del pool de hilos ExecutorService. En la práctica veremos la apertura del canal con open, los métodos read/ write, el esquema de interacción y los errores frecuentes.
    Disponible
  • Future, CompletionHandler: gestión de la finalización de operaciones

    JAVA 25 SELF
    Nivel 56,Lección 1
    Cómo gestionar en Java la finalización de operaciones asíncronas de NIO2: «promesas» mediante Future y devoluciones de llamada mediante CompletionHandler. Veremos las firmas de read/ write en AsynchronousFileChannel, la obtención bloqueante del resultado con get() y la consulta con isDone(), así como el manejo no bloqueante en completed()/ failed(). Mostraremos ejemplos prácticos de lectura/escritura y una comparación breve de los enfoques.
    Disponible
  • Procesamiento asíncrono de archivos de texto

    JAVA 25 SELF
    Nivel 56,Lección 2
    Practicamos E/S asíncrona en Java: leemos archivos de texto grandes por bloques en ByteBuffer mediante AsynchronousFileChannel, convertimos los bytes en caracteres correctamente con CharsetDecoder, y escribimos los datos de vuelta de forma asíncrona (con Future o CompletionHandler). Abordamos el problema de la «rotura» de caracteres multibyte (por ejemplo, "UTF-8"), el recuento de líneas al vuelo, la elección de codificaciones y los errores típicos al trabajar con buffers y canales.
    Disponible
  • Manejo de errores en E/S asíncrona, cancelación de operaciones

    JAVA 25 SELF
    Nivel 56,Lección 3
    Cómo capturar y manejar correctamente los errores en la entrada/salida asíncrona de Java: callbacks CompletionHandler con los métodos completed/ failed, registro de logs y notificaciones. Analizamos la cancelación de operaciones mediante Future y cancel( boolean), sus efectos en get() y CancellationException, así como consejos prácticos: try-with-resources, sincronización con CountDownLatch/ CompletableFuture y liberación de recursos.
    Disponible
  • Análisis de errores en el trabajo asíncrono con archivos

    JAVA 25 SELF
    Nivel 56,Lección 4
    Análisis práctico de las trampas al trabajar con la E/S de archivos asíncrona en Java NIO: gestión correcta de los buffers ByteBuffer (propiedades position/ limit, llamadas a flip(), clear(), compact()), condiciones de carrera en operaciones paralelas con AsynchronousFileChannel, cierre de recursos ( channel.close(), try-with-resources), gestión de errores en CompletionHandler (método failed(...)), gestión del ciclo de vida de las operaciones mediante Future<Integer> y sincronización con CountDownLatch, manejo correcto de codificaciones mediante CharsetDecoder, así como elección del pool de hilos adecuado ExecutorService.
    Disponible
  • Hilos frente a hilos virtuales: diferencias y ventajas

    JAVA 25 SELF
    Nivel 57,Lección 0
    Desgranamos en qué se diferencian los hilos de plataforma de los virtuales: cómo funciona el modelo « Platform Thread → SO» y por qué es pesado, qué cambia con los hilos virtuales ( Virtual Thread) sobre carrier threads, y cómo eso aporta escalabilidad sin «espagueti» reactivo. Veremos la práctica con Thread.ofVirtual(), compararemos el comportamiento para tareas I/O‑bound y CPU‑bound, trataremos la compatibilidad (llamadas bloqueantes como InputStream.read, Socket.accept) y los errores típicos (sincronizaciones antiguas, esperar una «aceleración mágica»).
    Disponible
  • Creación de hilos virtuales: Thread.ofVirtual().start()

    JAVA 25 SELF
    Nivel 57,Lección 1
    Práctica con los hilos virtuales de Java 21: en qué se diferencian de los de plataforma, cómo iniciarlos mediante Thread.startVirtualThread(...) y Thread.ofVirtual().start(...), cuándo sigue siendo adecuado new Thread(...) o Thread.ofPlatform(), y cómo ejecutar tareas en masa con Executors.newVirtualThreadPerTaskExecutor(). Veremos la espera de finalización con join(), el manejo de errores con Future y ExecutionException, así como los errores típicos al usar hilos virtuales.
    Disponible
  • Escalabilidad y rendimiento de Virtual Threads

    JAVA 25 SELF
    Nivel 57,Lección 2
    Comparación práctica entre hilos de plataforma Thread y hilos virtuales de Java 21: cómo la JVM, gracias a los « portadores» (carrier threads), ejecuta cientos de miles de tareas con un uso mínimo de memoria; dónde los hilos virtuales brillan (I/O‑bound) y dónde no (CPU‑bound). Veremos las limitaciones ( synchronized, bloqueos nativos), las mejores prácticas ( Executors.newVirtualThreadPerTaskExecutor()), la monitorización con JVisualVM y Java Flight Recorder, así como los errores típicos al migrar a Virtual Threads.
    Disponible
  • Uso de Executor con hilos virtuales

    JAVA 25 SELF
    Nivel 57,Lección 3
    Analizamos cómo ejecutar una tarea en un hilo virtual con Executors.newVirtualThreadPerTaskExecutor() (Java 21), en qué se diferencia de los pools clásicos ( newFixedThreadPool, newCachedThreadPool), cómo cerrar correctamente con shutdown() y awaitTermination(...), cómo obtener resultados de las tareas mediante Future y dónde los hilos virtuales proporcionan la mayor ventaja (I/O masivo, servidores web, pruebas de carga). Al final — errores típicos y matices.
    Disponible
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
Aprender
  • Registro
  • Curso de Java
  • Ayuda con tareas
  • Precios
  • Proyectos de juegos
  • Sintaxis de Java
Comunidad
  • Usuarios
  • Artículos
  • Foro
  • Chat
  • Historias de éxito
  • Actividad
  • Programa de afiliados
Empresa
  • Acerca de nosotros
  • Contactos
  • Reseñas
  • Sala de prensa
  • CodeGym para EDU
  • Preguntas frecuentes
  • Soporte
CodeGymCodeGym es un curso en línea para aprender programación Java desde cero. Este curso es una forma perfecta de dominar Java para principiantes. Contiene más de 1.200 tareas con verificación instantánea y un conjunto esencial de teoría sobre los fundamentos de Java. Para ayudarte a tener éxito en la formación, hemos implementado una serie de funciones motivacionales: cuestionarios, proyectos de programación, contenido sobre aprendizaje eficiente y contenidos sobre la carrera profesional de un desarrollador Java.
Síguenos
Idioma de la interfaz
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
"Los programadores se hacen, no nacen" © 2026 CodeGym
MastercardVisa
"Los programadores se hacen, no nacen" © 2026 CodeGym