10 Aralık 2019 Salı

Timer Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.Timer;
Bu sınıf Java 3'ten beri var. Yani bayağı eski. Arka planda çalışacak işler için kullanılır. Açıklaması şöyle.
For background processes (which don't do anything to UI) you can use old good java.util.Timer
Bu sınıfla 5 dakika sonra şu görevi yap, veya 5 dakika sonra bu görevi yap ve her 10 dakikada bir tekrarla tarzında işler yapılabiliyor. Alternatif olarak ScheduledExecutorService kullanılabilir.

Exception
Eğer bu sınıf içinde çalışan TimerTask nesnelerinden birisi exception fırlatırsa tüm TimerTask'lar iptal edilir.

constructor
Şöyle yaparız.
Timer timer = new Timer();
constructor - daemon
JVM kapanırken Timer da otomatik durdurulur
Örnek
Şöyle yaparız
Timer timer = new Timer(true);
cancel metodu
Bu sınıf tamamen asenkron çalışmak üzere tasarlanmış. cancel() metodunu koşmakta olan veya koşmak üzere hazır işlerin bitmesini de bekletmek mümkün değil. Şöyle yaparız.
timer.cancel();
purge metodu
Örnek ver

schedule metodu - Bir seferlik TimerTask + Date
Belirtilen saatte bir iş çalışsın diye kullanılır. Bu amaç için metoda bir Date nesnesi verilir.
Metodun imzası şöyle
void java.util.Timer.schedule(TimerTask task, Date time)
Örnek
Şöyle yaparız.
Calendar date = Calendar.getInstance();
date.set(Calendar.HOUR, 9);
date.set(Calendar.MINUTE, 0);
timer.schedule(new MyTask(), date.getTime()); 
schedule metodu - Bir seferlik TimerTask + Delay
Örnek
Şöyle yaparız.
Timer timer = new Timer();
TimerTask task = new TimerTask() {
  public void run() {
    ...
  }
};

long delay = 120000L; // 2 minutes delay
timer.schedule(task, delay);
schedule metodu - periyodik TimerTask + Delay + Period
Bu kullanımda her metod çağrısı arasındaki süre önemlidir (fixed-delay). Metod uzun sürse  bile sabit period süresi kadar beklenir.
Örnek
Şöyle yaparız
timer.schedule(new MyTask(), 10*1000, 60*60*1000);
scheduleAtFixedRate - periyodik TimerTask + Date + Period
Bu kullanımda her metodun çağrılma oranı önemlidir (fixed-rate). Metod uzun sürse bile yeni bir iş başlatılır.

Örnek
Belirtilen zamanda başlayıp her 2 saniyede bir çalıştırmak için şöyle yaparız.
timer.scheduleAtFixedRate(new MyTask(), new Date(), 2000);
scheduleAtFixedRate - periyodik TimerTask + Delay + Period
Belirtilen gecikme ile başlayıp belirtilen periyodda çalışır. Metodun imzası şöyle.
public void scheduleAtFixedRate(TimerTask task,
                                long delay,
                                long period)
Örnek
1 saniye sonra başlayıp ve her saniye çalıştırmak için şöyle yaparız.
timer.scheduleAtFixedRate(QuestionTick,1000,1000);

Hiç yorum yok:

Yorum Gönder