Comment arreter une méthode aprés un certain temps d'exécution ?

Hrizo -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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.






1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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