CodeGym
AI Academy
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
  • Structured Concurrency

    JAVA 25 SELF
    Nivel 58,Lección 0
    Structured Concurrency convierte un conjunto caótico de hilos en una jerarquía de tareas controlada: lanzas subtareas en hilos virtuales dentro de StructuredTaskScope, esperas a través de join(), gestionas los errores de forma centralizada con throwIfFailed() y obtienes resultados con resultNow()/ result(). Veremos las políticas de finalización ShutdownOnFailure y ShutdownOnSuccess, las compararemos con CompletableFuture, veremos ejemplos de un agregador HTTP y errores típicos al usar la concurrencia estructurada.
    Disponible
  • Cancelación de tareas y tiempos de espera a través de la pila

    JAVA 25 SELF
    Nivel 58,Lección 1
    Cómo cancelar correctamente operaciones largas y bloqueantes en Java: interrupción cooperativa mediante Thread.interrupt(), cancelación de tareas con Future.cancel() y el comportamiento de CancellationException, tiempos de espera y cancelación en CompletableFuture ( orTimeout, completeOnTimeout), concurrencia estructurada con StructuredTaskScope, plazo común (time‑budget) y propagación de tiempos de espera hacia abajo por la pila (incluidos Instant/ Duration y Scoped Values). Revisamos la práctica con IO bloqueante y errores típicos.
    Disponible
  • Sincronizadores de alto nivel

    JAVA 25 SELF
    Nivel 58,Lección 2
    En esta lección analizamos los sincronizadores de alto nivel de java.util.concurrent: CountDownLatch, CyclicBarrier, Phaser y Exchanger. Aprendemos a coordinar el arranque y la finalización de tareas mediante await()/ countDown(), a construir fases reutilizables y acciones de barrera con await(), a gestionar participantes dinámicos de la «orquesta» con register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() y a intercambiar datos por parejas con exchange(). En la práctica implementaremos una salida masiva de hilos de trabajo y un «tick» de juego, y también veremos errores típicos: la condición de un solo uso de CountDownLatch, el manejo de BrokenBarrierException y un deregister() correcto. En todos los casos, sin el dolor de wait()/ notify().
    Disponible
  • StampedLock y contadores de baja contención

    JAVA 25 SELF
    Nivel 58,Lección 3
    Cuando ReentrantReadWriteLock y el clásico ReadWriteLock empiezan a atascarse bajo alta carga, entra en juego StampedLock con lectura optimista: la pareja tryOptimisticRead + validate proporciona lecturas casi «gratuitas» cuando las escrituras son poco frecuentes. Analizaremos los modos de bloqueo, el trabajo con stamps, las limitaciones de reentrancy, lo compararemos con ReentrantReadWriteLock, y además veremos contadores de baja contención — LongAdder y LongAccumulator — y por qué superan a AtomicLong bajo contención. Cerraremos con práctica: una caché con predominio de lectura y un mini-benchmark.
    Disponible
  • Java Memory Model (JMM)

    JAVA 25 SELF
    Nivel 58,Lección 4
    Analizamos las reglas de visibilidad y orden en Java Memory Model: qué significa la relación happens-before, cómo y cuándo ayudan volatile, synchronized, los campos finales ( final), y por qué sin ellos aparecen datos «desactualizados». Mostraremos la publicación segura de objetos, un double-checked locking correcto, el acceso de bajo nivel mediante VarHandle, la influencia del false sharing y la anotación @Contended, así como observaciones prácticas sobre Thread.start()/ Thread.join(), Future.get() y los microbenchmarks JMH.
    Disponible
Aprender
  • Registro
  • Curso de Java
  • Ayuda con tareas
  • Precios
  • 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