Comment arreter une méthode aprés un certain temps d'exécution ?
Fermé
Hrizo
-
6 mai 2013 à 00:15
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 6 mai 2013 à 05:49
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 6 mai 2013 à 05:49
A voir également:
- Comment arreter une méthode aprés un certain temps d'exécution ?
- Blocage agriculteur carte en temps réel - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Erreur d'execution 1004 ✓ - Forum Excel
- Temps pour soi iphone - Guide
- Combien de temps pour télécharger 40go - Forum WiFi
1 réponse
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
6 mai 2013 à 05:49
6 mai 2013 à 05:49
Tu as plusieurs méthodes pour faire ça :
1) tu récupères l'heure quand tu rentres dans ta boucle et à chaque tour de boucle pour calculer la différence et la comparer au maximum de temps autorisé.
L'inconvénient de cette méthode est de devoir calculer explicitement l'heure à chaque tour de boucle...
2) tu crées un Thread qui va gérer un booléen, la seule action de ce Thread sera de faire une pause et une fois terminée mettre le booléen à false.
1) tu récupères l'heure quand tu rentres dans ta boucle et à chaque tour de boucle pour calculer la différence et la comparer au maximum de temps autorisé.
L'inconvénient de cette méthode est de devoir calculer explicitement l'heure à chaque tour de boucle...
long max = 60000; // 1 mn long tmax = System.currentTimeMillis() + max; while (condition && System.currentTimeMillis()<tmax) { ... }
2) tu crées un Thread qui va gérer un booléen, la seule action de ce Thread sera de faire une pause et une fois terminée mettre le booléen à false.
class Attente extends Thread { private boolean b; private long max; public Attente(long millis) { max = millis; } public void run() { try { Thread.sleep(max); } catch (InterruptedException e) { } b = false; } public boolean continuer() { return b; } } ... long max = 60000; // 1 mn Attente a = new Attente(max); a.start(); while (condition && a.continuer()) { ... }