Ben kullanıyorum java.util.Timersınıf ve bazı görevi gerçekleştirmek için zamanlama yöntemini kullanıyorum, ama 6 kez çalıştırdıktan sonra onun ben görevini durdurmak zorunda.
Bunu nasıl yapmalıyım?
Yanıtlar:
Bir yerde zamanlayıcıya bir referans verin ve şunu kullanın:
timer.cancel();
timer.purge();
ne yapıyorsa onu durdurmak için. Bu kodu, yaptığınız görevin içine static int, kaç kez dolaştığınızı saymak için bir ile yerleştirebilirsiniz, örneğin
private static int count = 0;
public static void run() {
count++;
if (count >= 6) {
timer.cancel();
timer.purge();
return;
}
... perform task here ....
}
cancelkendisi işe yarar .
Ya çağrı cancel()üzerineTimer hepsi o yapıyor, ya eğer cancel()üzerindeTimerTask ise zamanlayıcı kendisi Devam etmek istiyor diğer görevleri vardır.
Zamanlayıcıda planladığınız görevi durdurmalısınız: Zamanlayıcınız:
Timer t = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
//do something
};
}
t.schedule(tt,1000,1000);
Durdurmak için:
tt.cancel();
t.cancel(); //In order to gracefully terminate the timer thread
Sadece zamanlayıcıyı iptal etmenin devam eden zaman görevlerini sonlandırmayacağına dikkat edin.
Zamanlayıcıyı uyandıktan sonra milisaniye cinsinden belirli bir zamanda sonlandırın.
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(" Run spcific task at given time.");
t.cancel();
}
}, 10000);