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
  • Deadlock: causas, ejemplos, resolución

    JAVA 25 SELF
    Nivel 53,Lección 0
    En la lección analizamos qué es el interbloqueo de hilos (deadlock) en Java, por qué ocurre y cuáles son las cuatro condiciones necesarias para que se produzca. Con un ejemplo práctico usando synchronized mostramos cómo reproducir el problema y luego estudiamos estrategias de prevención: orden único de adquisición de recursos, uso de ReentrantLock.tryLock con timeout, reducción de secciones críticas y evitar locks anidados innecesarios. Veremos la diagnosis mediante Thread Dump y jstack, cómo reconocer los estados BLOCKED/ WAITING, y cerraremos con una checklist y errores típicos.
    Disponible
  • Livelock y Starvation: definición y ejemplos

    JAVA 25 SELF
    Nivel 53,Lección 1
    Analizamos las anomalías de concurrencia Livelock y Starvation: en qué se diferencian de Deadlock, cómo se ven en el código y en los logs. Se muestran ejemplos en Java: «trabajadores corteses» (bloqueo vivo) e inanición por prioridades y debido a bloqueos injustos. Aprendemos a detectar el problema (registro de logs, Thread dump, VisualVM, Java Mission Control) y a prevenirlo: retrasos aleatorios antes de reintentar ( Thread.sleep), algoritmos no bloqueantes, bloqueos justos mediante ReentrantLock con el indicador fairness ( new ReentrantLock(true)), secciones críticas cuidadas y evitar abusar de setPriority() y synchronized.
    Disponible
  • Colecciones thread-safe: ConcurrentHashMap y otras

    JAVA 25 SELF
    Nivel 53,Lección 2
    En esta lección veremos por qué las colecciones normales ( ArrayList, HashMap) son peligrosas en un entorno multihilo y qué alternativas seguras para hilos ofrece el paquete java.util.concurrent: ConcurrentHashMap, CopyOnWriteArrayList, ConcurrentLinkedQueue, estructuras basadas en skip list y BlockingQueue. Hablaremos de operaciones atómicas como merge, putIfAbsent, computeIfAbsent, las compararemos con Collections.synchronizedMap, y veremos ejemplos prácticos y errores típicos (iteradores de consistencia débil, secuencias de operaciones no atómicas, etc.).
    Disponible
  • AtomicInteger, AtomicReference: operaciones atómicas

    JAVA 25 SELF
    Nivel 53,Lección 3
    ¿Por qué el incremento i ++ no funciona en multihilo, qué son las operaciones atómicas y cómo las ofrece el paquete java.util.concurrent.atomic. Analizamos AtomicInteger y AtomicReference, los métodos incrementAndGet(), compareAndSet(...), el mecanismo interno CAS (Compare-And-Swap), así como cuándo conviene elegir synchronized y cuándo — LongAdder. Al final — errores típicos: operaciones complejas, ABA y seguridad para hilos de objetos anidados.
    Disponible
  • Diagnóstico y depuración de programas multihilo

    JAVA 25 SELF
    Nivel 53,Lección 4
    Cómo capturar y leer un Thread Dump con jstack, VisualVM e IDE, reconocer los estados de los hilos ( RUNNABLE, BLOCKED, WAITING) y encontrar interbloqueos. Veremos la monitorización de hilos en Java Mission Control y Java Flight Recorder, prácticas de registro (nombres de hilos, entrada/salida de synchronized), minimización de bloqueos, pruebas de concurrencia con CountDownLatch y análisis de un caso real de deadlock. Al final — errores típicos y cómo evitarlos.
    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