2017-09-18 4 views
-1

J'ai une minuterie java et je veux qu'elle fasse quelque chose à chaque fois qu'elle se déclenche. Par exemple, je veux que mon programme à la sortie suivante:Java - Comment faire quelque chose à chaque fois?

sortie que je veux:

Cochez 1 secondes passées
case 2 secondes passé
Tick 3 secondes passé
Cochez 4 secondes passées
Cochez 5 secondes passèrent
temps jusqu'à, do_something en cours d'exécution() ...

Ce que j'est jusqu'à présent thi s:

Timer timer = new Timer(); 
TimerTask timerTask = new TimerTask() { 
    @Override 
    public void run() { 
     System.out.println("Time up, running do_something()"); 
     do_something(); 
    } 
}; 
timer.schedule(timerTask, 5); 

sortie réelle de mon code à ce jour est la suivante:

temps jusqu'à, do_something en cours d'exécution() ...

5 secondes se sont écoulées quand je tire cette ligne .

+0

Vous aurez besoin d'une boucle –

+0

Comment exactement dois-je faire la boucle? – WhatsYourIdea

+3

Eh bien, votre 'Timer' est configuré pour un délai de quelques millisecondes, donc vous n'obtiendrez qu'une seule fois, vous devrez utiliser' schedule (TimerTask, long, long) 'si vous voulez qu'il se répète. Vous pouvez également utiliser deux 'Timer's, un répétition, un ensemble non répétitif avec des intervalles différents. Si vous voulez un 'Timer', alors vous devrez déterminer quand il a été activé pour la première fois, calculer le temps entre les exécutions et déterminer ce qu'il faut faire. Une fois que vous avez dépassé votre seuil (5 secondes), annulez le chronomètre et faites autre chose – MadProgrammer

Répondre

0

Eh bien, si vos intentions sont en boucle, vous devez utiliser la méthode surchargée de la schedule sur Timer comme:

timer.schedule(TimerTask task, long delay, long period); 

qui planifier la tâche spécifiée pour répétées exécution retard fixe, en commençant après la spécifié délai.