Sobes.tech
Middle

¿Cuáles son las diferencias entre los métodos Thread.sleep() y Thread.yield()?

sobes.tech AI

Respuesta de la IA

Thread.sleep() detiene la ejecución del hilo actual durante un tiempo determinado, poniéndolo en estado de Timed Waiting. No cede la CPU a otros hilos. Thread.yield() informa al planificador de hilos que el hilo actual está listo para ceder temporalmente la ejecución a otros hilos con la misma o mayor prioridad, pero no hay garantía de que lo haga. yield() pone el hilo en estado de Runnable.

Las principales diferencias:

  • Duración: sleep() garantiza la suspensión durante un tiempo especificado. yield() no garantiza la transferencia de control ni una duración específica de pausa.
  • Estado del hilo: sleep() pone el hilo en estado de Timed Waiting (o Waiting con timeout). yield() pone el hilo en estado de Runnable.
  • Propósito: sleep() se usa para introducir retrasos. yield() se usa para permitir la ejecución de otros hilos, especialmente en bucles, para evitar la monopolización de la CPU.
  • Planificador: sleep() no afecta al planificador (excepto que el hilo no está activo). yield() es una sugerencia para el planificador.

Ejemplo de uso:

// Uso de sleep()
try {
    Thread.sleep(100); // Pausa por 100 milisegundos
} catch (InterruptedException e) {
    Thread.currentThread().interrupt();
}
// Uso de yield()
Thread.yield(); // Intento de ceder la ejecución