2010-04-18 15 views
8

Tengo el hilo principal de ejecución que genera nuevos hilos. En el hilo principal de ejecución en main() estoy llamando al Thread.sleep(). ¿Cuándo obtengo una excepción no controlada tipo InterruptedException?.sleep del hilo principal está lanzando InterruptedException

No estoy seguro de por qué estoy recibiendo esto. Pensé que esto era porque necesitaba una referencia al hilo principal, así que seguí e hice una referencia a través del Thread.currentThread().

¿No es esta la manera de que el hilo duerma? Lo que necesito hacer es tener el hilo principal wait/sleep/delay hasta que requiera trabajo nuevamente.

+0

Cualquier código sería muy apreciado :). –

+0

Bueno, todo lo que hago o he hecho ha llamado a Thread.sleep (una cantidad de milisegundos) o hice una referencia a mi hilo principal (creo que eso es lo que estaba haciendo) con Thread t = Thread.currentThread() y luego llamando t.sleep (una cantidad de milisegundos). Ambos casos han arrojado la InterruptedException. – Chris

Respuesta

18

Lo que ve es un error de compilación, debido a que no manejó la excepción marcada (InterruptedException en este caso) correctamente. significa hacer una de las siguientes Manipulación:

1) Declarar el método como throws InterruptedException, por lo que requiere la persona que llama para manejar la excepción

2) la captura de él con un bloque try{..}catch(..){..}. Por ejemplo:

try { 
    Thread.sleep(1500); 
} catch(InterruptedException e) { 
    System.out.println("got interrupted!"); 
} 

InterruptedException se utiliza para indicar que el hilo actual ha sido interrumpida por una rosca exterior mientras se estaba llevando a cabo alguna operación de bloqueo (por ejemplo interrumpible IO, espera, sueño)

-2

Thread.sleep (t);

así es como puede hacer que su hilo espere. donde t está en milisegundos. está funcionando bien en mi método principal, por lo que para encontrar su problema sería mejor si puede proporcionar su código aquí.

0

En la línea donde usted es la definición de principal comienza, solo incluya lanza la excepción. Yo también estaba enfrentando un problema similar, y esto ayudó. Después de esta inclusión, no necesita incluir Thread.sleep (xx); dentro de una declaración try-catch

Cuestiones relacionadas