341 votes

Comment puis-je retarder un programme Java pour quelques secondes?

J'ai essayé de retarder ou mettre à dormir - mon programme Java, mais une erreur se produit.

Je ne suis pas en mesure d'utiliser Thread.sleep(x) ou wait(). Le même message d'erreur s'affiche:

non déclarée exception java.lang.InterruptedException; doivent être pris ou déclarée à être jetés.

Est-il une étape nécessaire avant d'utiliser l' Thread.sleep() ou wait() méthodes?

574voto

Konrad Garus Points 19280

Vous avez beaucoup de lecture avant de vous. À partir des erreurs de compilation à travers la gestion des exceptions, le filetage et le fil d'interruptions. Mais cela va faire ce que vous voulez:

try {
    Thread.sleep(1000);                 //1000 milliseconds is one second.
} catch(InterruptedException ex) {
    Thread.currentThread().interrupt();
}

195voto

Karamba Points 11

Comme d'autres utilisateurs ont dit que vous devez entourer votre appel avec un try{...} catch{...} bloc. Mais depuis Java 1.5 a été publié, il y a TimeUnit classe qui font la même chose que le Thread.sommeil(millis) mais est plus pratique. Vous pouvez choisir l'unité de temps pour le sommeil de l'opération.

try {
    TimeUnit.NANOSECONDS.sleep(100);
    TimeUnit.MICROSECONDS.sleep(100);
    TimeUnit.MILLISECONDS.sleep(100);
    TimeUnit.SECONDS.sleep(100);
    TimeUnit.MINUTES.sleep(100);
    TimeUnit.HOURS.sleep(100);
    TimeUnit.DAYS.sleep(100);
} catch (InterruptedException e) {
    //Handle exception
}

Il a également d'autres méthodes: TimeUnit Documentation Oracle

29voto

Abel Points 24335

Jetez un oeil à cet excellent post brève sur la façon de le faire correctement. Ce qui signifie: attraper l' InteruptedException. N'oubliez pas que vous devez ajouter ce fourre-bloc. La poste explique un peu plus loin.

13voto

Jatin Points 501

Utiliser le codage de construire pour gérer les exceptions

try {
  Thread.sleep(1000);
} catch (InterruptedException ie) {
    //Handle exception
}

8voto

JoseK Points 20075

Mettez votre Thread.sleep dans un bloc try catch

try {
    //thread to sleep for the specified number of milliseconds
    Thread.sleep(100);
} catch ( java.lang.InterruptedException ie) {
    System.out.println(ie);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X