Définir une limite de temps / délai d'attente pour une méthode
J'ai une méthode simple comme ceci:
public void foo(int runForHowLong) {
Motor.A.forward();
}
Maintenant un voulez être en mesure de passer un argument à foo(), qui fixe une limite de temps pour combien de temps foo() sera exécuté. Comme si j'envoie foo(2), il fonctionne pendant 2 secondes.
double possible de Java: exécuter le code pour les x secondes?
OriginalL'auteur Lasse A Karlsen | 2011-10-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser des AOP et un
@Timeable
d'annotation à partir d' jcabi-aspects (je suis développeur):Lorsque le temps limite est atteint votre fil obtiendrez
interrupted()
indicateur a la valeurtrue
et c'est votre travail pour gérer correctement cette situation et d'arrêter l'exécution.OriginalL'auteur yegor256
Regardez cette question sur Stackoverflow: Exécuter le code pour les x secondes en Java?
C'est exactement le même en fonction des exigences.
Comme je l'interpréter à partir de votre question que vous aimeriez avoir la méthode de marche pendant 2 minutes. Pour réaliser que vous avez besoin pour démarrer un Thread qui vous contrôle pendant 2 minutes puis arrêter le fil.
OriginalL'auteur rit
La
TimeUnit
classe fournit la méthode requise pour cela.Découvrez-le ici: TimeUnit dans le JDK 6
OriginalL'auteur Kounavi
Si vous voulez pour qu'il fonctionne pendant deux secondes, vous pouvez utiliser
Thread.sleep(2000)
. Notez queThread.sleep(2000)
est plus d'un"suggestion" que d'une "commande"; il ne fonctionnera pas pour exactement 2000
millisecondes, en raison de la planification dans la JVM. Il peut à peu près
simplifiée pour l' environ 2000 millisecondes.
Si vous souhaitez continuer à demander
forward
pendant 2 secondes (ce qui aurait pour résultat tout à fait quelques appels de la fonction), vousbesoin d'utiliser une minuterie de quelque sorte.
OriginalL'auteur Jon Newmuis