Comment arreter une méthode aprés un certain temps d'exécution ?
Hrizo
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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 ?
- Renommer plusieurs fichiers en même temps - Guide
- Combien de temps reste une story sur facebook - Guide
- Temps pour soi iphone - Guide
- Sablier snap temps - Forum Snapchat
- 2go internet combien de temps - Forum Opérateurs & Réseaux mobiles
1 réponse
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())
{
...
}