Comment puis-je faire Java attendre une méthode avant de continuer?

Donc mon problème est que j'ai besoin de ces méthodes pour exécuter l'un après l'autre, mais je ne peux pas travailler sur la façon de rendre les méthodes d'attendre avant de l'exécuter.
Toute aide est appréciée. Je vous remercie.
Voici mon code:

public void startMoving() throws InterruptedException
{
moveEnemy("right",3);
wait();
moveEnemy("down",3);
wait();
moveEnemy("right",2);
wait();
moveEnemy("up",1);
wait();
moveEnemy("right",2);
wait();
moveEnemy("up",2);
wait();
moveEnemy("right",2);
wait();
moveEnemy("down",4);
wait();
moveEnemy("left",1);
wait();
moveEnemy("down",2);
wait();
moveEnemy("right",3);
wait();
moveEnemy("up",2);
wait();
moveEnemy("right",1);
wait();
moveEnemy("up",1);
wait();
moveEnemy("right",3);
}
public void moveEnemy(final String direction, final int numMoves)
{
Thread moveThread = new Thread(new Runnable()
{
public void run()
{
isMoving = true;
int originalX = getX();
int originalY = getY();
for(int loop = 0; loop <= 98*numMoves; loop++)
{
try 
{
Thread.sleep(5);
} 
catch (InterruptedException e){}
if(direction.equals("up"))
{
setLocation(originalX,originalY+loop);
}
if(direction.equals("down"))
{
setLocation(originalX,originalY-loop);
}
if(direction.equals("left"))
{
setLocation(originalX-loop,originalY);
}
if(direction.equals("right"))
{
setLocation(originalX+loop,originalY);
}
}
try 
{
Thread.sleep(50);
} 
catch (InterruptedException e){}
notify();
}
});
moveThread.start();
  • thread.wait() ?
  • Probablement Fil.sleep(), je suppose qu'il veut attendre une certaine période de temps
  • Ne pas dormir ou attendre sur le thread de l'INTERFACE utilisateur...
  • Ne pas utiliser des Threads alors.
  • Il est probablement mieux d'avoir votre threads séparés vérifier les conditions ont été remplies avant de procéder. Fondamentalement, vérifier auprès de votre contrôleur et de voir si elles doivent continuer ou d'une boucle jusqu'à ce que donné le OK. Je voudrais éviter de Thread.sleep(), mais dans tous les test/jetez code. Thread.sleep() a toutes sortes de problèmes, y compris de ne pas être précis. Si vous avez besoin de précision de tir de méthodes, il peut être intéressant de vérifier dans ScheduledExecutorService et/ou la Quartz de la bibliothèque.
  • Pourquoi êtes-vous à l'aide de Threads à tous? Voulez-vous garder les opérations de l'EDT, mais dans un ordre séquentiel? Ensuite, vous avez besoin d'un Thread, pas un par opération comme vous le faites maintenant.
  • Salut! Avez-vous résolu ce problème? Je suppose que je suis confronté à la même. Vous avez Minuterie? Je suppose que vous êtes à l'aide de la JFrame avec le Composite et de repeindre tout lorsque la Minuterie est en cours d'exécution. Suis-je le droit?

InformationsquelleAutor Asto | 2014-01-14