Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.
Pregunta Java · Threads
¿Cuál es el resultado de compilar y ejecutar el siguiente código? ¿Y por qué?
public class Prueba {
public static void main(String[] args) {
String mensaje = "Saludos";
try {
mensaje.wait();
} catch (InterruptedException e) {
}
System.out.println("mensaje: " + mensaje);
}
}- La compilación falla.
- Se lanza una
IllegalMonitorStateExceptionen tiempo de ejecución. - No se imprime nada, espera indefinidamente.
- Se imprime
"mensaje: Saludos"
Ver la respuesta
Respuesta: 2.
java PruebaException in thread "main" java.lang.IllegalMonitorStateException: current thread is not owner at java.base/java.lang.Object.wait0(Native Method) at java.base/java.lang.Object.wait(Object.java:389) at java.base/java.lang.Object.wait(Object.java:351) at Prueba.main(Prueba.java:5)
wait() hace que el hilo espere hasta que otro llame a notify() o notifyAll() sobre el mismo objeto, y solo se puede llamar teniendo su monitor, es decir, dentro de un synchronized (mensaje) {…}. Aquí no hay ningún bloque synchronized, así que compila pero falla al ejecutar.
Es la hermana de otra pregunta en la que sí hay synchronized, pero sobre el objeto equivocado. Hoy rara vez se usan wait y notify directamente: java.util.concurrent tiene herramientas más seguras, como CountDownLatch o las colas bloqueantes.
Más preguntas de Java
- El orden de un HashSet
- wait() sin el monitor correcto
- start() con un argumento
- Dos hilos y una variable compartida
- Leer más allá del final de un archivo
- binarySearch con null
- Serializar una clase cuyo padre no es Serializable
- Clases internas anidadas
- Llamar a run() en vez de start()
- Un assert que nunca falla
- HashSet sin equals ni hashCode
- Campos transient al serializar
Pregunta publicada en 2013 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.
Yo digo que la 3
3