La création d'une répétition de minuterie de rappel en Java
Je veux avoir une classe que l'évolution de sa propre salle de variables toutes les 2 secondes. Je sais que si je fais quelque chose comme
import java.util.Timer;
//...
Timer timer;
//...
timer.schedule(new ChangeSomething(), 2000);
Il va exécuter ChangeSomething()
après 2 secondes, il est un moyen de lui dire de faire quelque chose toutes les 2 secondes, ou, Si je l'ai mis à l'intérieur de ChangeSomething()
timer.schedule(new ChangeSomething(), 2000);
ça va fonctionner?
Sur une note, ce qui ne timer.cancel()
exactement?
OriginalL'auteur SIMEL | 2012-01-29
Vous devez vous connecter pour publier un commentaire.
Utilisation
timer.scheduleAtFixedRate()
le programmer pour qu'il se reproduit toutes les deux secondes:De la javadoc de
Timer.cancel()
:EDIT:
Relatives à l'interne thread d'exécution pour un
Timer
qui s'exécute une seule tâche à la fois:La Javadoc de
Timer
indique que cela n'est pas nécessaire et que la minuterie est exeecution thread va se terminer. Cependant, il ne fait que cela peut prendre un temps arbitrairement long etcancel()
peut être utilisé pour y mettre fin plus rapidement. (Collé paragraphe pertinent de Javadoc en réponse).OriginalL'auteur hmjd
Vous aurez besoin de faire appel à une autre méthode de planification de la Minuterie, appelé scheduleAtFixedRate(...) qui peut atteindre 3 paramètres. Les 2 premières sont identiques à celles de l'annexe que vous avez utilisés, tandis que Le troisième paramètre indique une période de temps (en millisecondes) entre chaque tâche exécutions.
Vous pouvez vérifier l'java pai doc pour cette méthode ici: http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html#scheduleAtFixedRate(java.util.TimerTask, java.util.Date, long)
OriginalL'auteur IllegalArgumentException
Voici un exemple
}
Selon le Java Docs: docs.oracle.com/javase/7/docs/api/java/util/Timer.html, la Minuterie ne avoir un constructeur par défaut.
OriginalL'auteur barnardh
Pour être plus précis ici: ChangeSomething() est le constructeur de votre ChangeSomething classe. Le constructeur sera exécuté immédiatement lorsque vous passez le ChangeSomething instace objet de la minuterie, pas après 2 secondes. C'est l'objet de la méthode run() sera déclenchée après 2 secondes.
Pour l'exécution de cette méthode run() de manière répétée toutes les 2 secondes, l'utilisation
schedule(TimerTask task, long delay, long period)
OriginalL'auteur Jan