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
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.






A voir également:

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
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...

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())
{
	...
}
2