Salut tout ce que j'ai ce code. Je veux retarder mon programme de quelques secondes et afficher "scanning ..."
Voici ce que j'ai. Cela compile mais ne retarde rien
if (i==1){
try {
Thread.sleep(1);
} catch (InterruptedException ie)
{
System.out.println("Scanning...");
}
}
merci d'avance J'ai int i = 1 avant évidemment
Si vous voulez faire une pause, utilisez Java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Dormir une seconde ou 10 minutes
TimeUnit.MINUTES.sleep(10);
Ou le sommeil
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
voir aussi la documentation officielle https://docs.Oracle.com/javase/tutorial/essential/concurrency/sleep.html
TimeUnit.SECONDS.sleep()
appellera Thread.sleep
. La seule différence est la lisibilité et l'utilisation de TimeUnit est probablement plus facile à comprendre pour des durées non évidentes
mais si vous voulez résoudre votre problème
int timeToWait = 10; //second
System.out.print("Scanning")
try {
for (int i=0; i<timeToWait ; i++) {
Thread.sleep(1000);
System.out.print(".")
}
} catch (InterruptedException ie)
{
Thread.currentThread().interrupt();
}
Thread.sleep()
prend en attente le nombre de millisecondes, pas de secondes.
Dormir pendant une milliseconde n'est pas perceptible. Essayez Thread.sleep(1000)
de dormir pendant une seconde.
Ceci est dans un mouseEvent btw
Si cela se trouve dans une interface graphique Swing, supprimez tous les appels à Thread.sleep(...)
car vous risqueriez de mettre la totalité de l'interface graphique en veille, ce qui la rendrait inutile. Utilisez plutôt un minuteur Swing pour générer des retards dans l’interface graphique tout en lui permettant de mettre à jour ses graphiques.
Vous voudrez également éviter les appels System.out.println(...)
, sauf lors du débogage, et afficher à la place les notifications des utilisateurs dans l'interface graphique elle-même, éventuellement dans un JLabel d'état ou sous forme de boîte de dialogue.
Vous avez System.out.println("Scanning...")
dans un bloc catch. Voulez-vous mettre cela en essai?
Java:
Pour calculer les temps, nous utilisons cette méthode:
import Java.text.SimpleDateFormat;
import Java.util.Calendar;
public static String getCurrentTime() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(cal.getTime());
}
Seconde:
import Java.util.concurrent.TimeUnit;
System.out.println("Start delay of 10 seconds, Time is: " + getCurrentTime());
TimeUnit.SECONDS.sleep(10);
System.out.println("And delay of 10 seconds, Time is: " + getCurrentTime());
Sortie:
Départ différé de 10 secondes, le temps est: 14:19:08
Et le retard de 10 secondes, le temps est de: 14:19:18
Minutes:
import Java.util.concurrent.TimeUnit;
System.out.println("Start delay of 1 Minute, Time is: " + getCurrentTime());
TimeUnit.MINUTES.sleep(1);
System.out.println("And delay of 1 Minute, Time is: " + getCurrentTime());
Sortie:
Départ différé de 1 minute, le temps est de: 14:21:20
Et le retard de 1 minute, le temps est: 14:22:20
Millisecondes:
import Java.util.concurrent.TimeUnit;
System.out.println("Start delay of 2000 milliseconds, Time is: " +getCurrentTime());
TimeUnit.MILLISECONDS.sleep(2000);
System.out.println("And delay of 2000 milliseconds, Time is: " + getCurrentTime());
Sortie:
Délai de démarrage de 2000 millisecondes, le temps est de: 14:23:44
Et un retard de 2000 millisecondes, le temps est de: 14:23:46
Ou:
Thread.sleep(1000); //milliseconds
Selon la documentation Java, Thread.sleep est défini comme suit:
Thread.sleep(t);
where t => time in millisecons to sleep
Si vous voulez dormir pendant 1 seconde, vous devriez avoir:
Thread.sleep(1000);
Quelques problèmes, vous ne tardez pas beaucoup (.sleep
est exprimé en millisecondes et non en secondes) et vous essayez d'imprimer dans votre instruction catch
. Votre code devrait ressembler davantage à:
if (i==1) {
try {
System.out.println("Scanning...");
Thread.sleep(1000); // 1 second
} catch (InterruptedException ex) {
// handle error
}
}
déplacez l'instruction System.out pour bloquer définitivement.
Utilisez Thread.sleep(2000);
// 2000 pendant 2 secondes