Comment arreter une méthode aprés un certain temps d'exécution ?
Fermé
Hrizo
-
6 mai 2013 à 00:15
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 6 mai 2013 à 05:49
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 6 mai 2013 à 05:49
Bonjour,
Bonsoir,
Je voulais savoir s'il existait une méthode sous java qui permettait de quitter une méthode après un certain temps d'exécution.
Pour être plus précis, j'utilise une boucle dont la condition d'arrêt n'est pas vérifiable pour certaines instances, ce qui peut amener a une boucle infinie, donc a une exécution sans arrêt du programme.
Bonsoir,
Je voulais savoir s'il existait une méthode sous java qui permettait de quitter une méthode après un certain temps d'exécution.
Pour être plus précis, j'utilise une boucle dont la condition d'arrêt n'est pas vérifiable pour certaines instances, ce qui peut amener a une boucle infinie, donc a une exécution sans arrêt du programme.
A voir également:
- Comment arreter une méthode aprés un certain temps d'exécution ?
- Combien de temps reste une story sur facebook - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Excel trier plusieurs colonnes en même temps - Guide
- Temps pour soi iphone - Guide
- Cœur jaune snap combien de temps - Forum Snapchat
1 réponse
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
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()) { ... }