[java]temporiser un programme - [java]temporiser un programme

je bloquer mon processus pendent un temps determiné(en secondes) sans occuper le cpu

utilises un thread.
Tu créé une classe qui extends Thread. Dans sa méthode run() tu fais juste :


public class Attente extends Thread
{ 
 public Attente(){}

 public void run()
 {
  try{
  sleep(Tempsàdéfinir);}
  catch(Exception ex){}
 }
}

Pour l’utiliser :


//quelque part dans le code
Attente attente = new Attente();
attente.start();//lancement du thread
try{
 attente.join(); // on attend la fin du thread
}
catch(Exception ex){}

Question de noob, on peut pas utiliser une classe statique ?

Et si tu veux être propre, tu crée un Runnable plutôt qu’une Thread.

new Thread(new Runnable() {
  public void run() {
    Thread.currentThread().sleep(tempsEnMs);
  }
}).start();

Mandarounet> pourquoi une classe statique? c’est pas trop trop objet à la base…

Je pensais à la classe statique pour ne pas avoir à instancier la classe Attente à chaque fois. Mais ta solution a l’air bien plus propre !

dans la solution à Sans-Nom, il y a aussi une création de classe.

Mandarounet> dans ce cas un singleton, ou un proxy, limiteront la casse.

Ceci dit, nos exemples sont faux. Tu fois juste faire Thread.currentThread().sleep(…) pour que ça marche. Là, on fait la sieste dans une nouvelle thread.