J'ai un tas de procédures qui doivent être exécutées successivement jusqu'à ce qu'elles soient toutes exécutées ou qu'une certaine condition soit remplie. Voici le code de base qui doit être exécutée jusqu'à ce qu'une condition soit remplie:Comment puis-je interrompre une séquence de procédures en Java?
public boolean search()
{
robot.go();
robot.spin();
//etc - around 8 more similar commands (each takes around 2 seconds)
return false; //didn't find what it was looking for
}
Jusqu'à présent, la seule façon que je l'ai pensé à faire ce que je voulais est ceci:
public boolean search()
{
robot.go(false);
while(robot.isMoving())
{
if(thingFound())
{
robot.stop()
return true;
}
Thread.yield();
}
robot.spin(false);
while(robot.isMoving())
{
if(thingFound())
{
robot.stop()
return true;
}
Thread.yield();
}
//etc - around 8 more similar commands
return false; //didn't find what it was looking for
}
Le false
paramètre à go()
et spin()
indique qu'ils devraient retourner immédiatement, permettant à la condition d'être vérifiée. Cependant, cette approche me semble plutôt inefficace, car le même bloc de code doit être répété 10 fois. Cela pourrait-il être réalisé plus efficacement avec des exceptions ou des threads concurrents?
Voulez-vous ces boucles while to t sortir après un certain temps? –
Non. Ils devraient continuer jusqu'à ce que 'robot.isMoving()' retourne 'false', car c'est seulement alors que la commande précédente est terminée. – Eric