Java Taymeri sinif müəyyən bir zaman aralığında bir tapşırığı və ya işi bir dəfə və ya bir neçə dəfə yerinə yetirir. Java kommunal sinfinin bir hissəsidir. Bu sinif, daxili metodlarından istifadə edərək işlərin müəyyən bir tarixdə planlaşdırılması üçün də istifadə olunur.
Öz tapşırığımızı yaratmaq istəyiriksə, müddətini uzatmalıyıq Taymer Tapşırığı mücərrəd sinif olan sinif. Taymer sinfi bu tapşırığı planlaşdırma üçün istifadə edir. Başqa sözlə, Timer bir planlaşdırıcı kimi istifadə olunur və TimerTask planlaşdırılması lazım olan işdir.
Mündəricat
Java Timer Konstruktorları
Aşağıdakı konstruktorlardan istifadə edərək Timer obyektini yarada bilərik
konstruktor | təsvir |
---|---|
Taymer () | Bu, defolt taymerdir |
Taymer (boolean isDaemon) | Bu daemon kimi çalışması üçün əlaqəli mövzu ilə bir taymer yaradır |
Taymer (Simli ad) | Bu, göstərilən adla əlaqəli mövzu ilə bir taymer yaradır |
Taymer (Simli ad, boolean isDaemon) | Belirtilen adla əlaqəli mövzu ilə bir timer yaradır və bir daemon kimi çalıştırılabilir |
Timer t = new Timer();
Java Timer Metodları
Aşağı ən çox istifadə olunan Java Timer metodlarıdır.
Üsul | təsvir | Parameters |
---|---|---|
ləğv et () | Taymeri dayandırır. Varsa, mövcud iş tapşırığı istisna olmaqla, bütün planlaşdırılan tapşırıqları ləğv edir | |
int təmizlənməsi () | Bu, ləğv edilmiş bütün tapşırıqları növbədən çıxarır və silinmiş tapşırıqların sayını qaytarır. | |
etibarsız cədvəl (TimerTask tapşırığı, tarix vaxtı) | Göstərilən tapşırığın göstərilən vaxtda işləməsini planlaşdırır. Vaxt keçmişsə, dərhal icra üçün alınır | tapşırıq - yerinə yetiriləcək vəzifə tapşırığın yerinə yetirilməli olduğu vaxt |
etibarsız cədvəl (TimerTask tapşırığı, uzun gecikmə) | Göstərilən gecikmədən sonra müəyyən bir işi planlaşdırır | tapşırıq - yerinə yetiriləcək vəzifə gecikmə - tapşırığın icrasından əvvəl milisaniyədə gecikmə |
etibarsız cədvəl (TimerTask tapşırığı, tarix ilk dəfə, uzun müddət) | Sözügedən dövri fasilə ilə təkrar icra üçün xüsusi başlanğıcda müəyyən bir tapşırıq planlaşdırır | tapşırıq - yerinə yetiriləcək vəzifə ilk dəfə - icra üçün tapşırığın başlama vaxtı dövr - tapşırığın yerinə yetirilməli olduğu interval |
etibarsız cədvəl (TimerTask tapşırığı, uzun gecikmə, uzun müddət) | Göstərilən dövri fasilə ilə göstərilən gecikmədən sonra təkrar icra üçün müəyyən bir tapşırıq planlaşdırır | tapşırıq - yerinə yetiriləcək vəzifə gecikmə - tapşırığın icrasından əvvəl milisaniyədə gecikmə dövr - tapşırığın yerinə yetirilməli olduğu interval |
vois schedAtFixedRate (TimerTask tapşırığı, ilk dəfə tarix, uzun müddət) | Göstərilən dövri fasilələrlə müəyyən tarixdən başlayaraq sabit dərəcə icrası ilə müəyyən bir işi planlaşdırır | tapşırıq - yerinə yetiriləcək vəzifə ilk dəfə - icra üçün tapşırığın başlama vaxtı dövr - tapşırığın yerinə yetirilməli olduğu interval |
etibarsız cədvəlAtFixedRate (TimerTask tapşırığı, uzun gecikmə, uzun müddət) | Göstərilən dövri fasilə ilə göstərilən gecikmədən sonra təkrar sabit dərəcə icrası üçün xüsusi bir tapşırıq planlaşdırır | tapşırıq - yerinə yetiriləcək vəzifə gecikmə - tapşırığın icrasından əvvəl milisaniyədə gecikmə dövr - tapşırığın yerinə yetirilməli olduğu interval |
Taymer İstisnaları
Java Timer sinfi tapşırıqları planlaşdırarkən aşağıdakı istisnaları atır:
- NullPointerException - tapşırıq və ya vaxt boş olduqda
- QanunsuzArgumentException - vaxt və ya gecikmə və ya müddət mənfi olduqda
- IllegalStateException - tapşırıq əvvəlcədən planlaşdırılıbsa və ya ləğv edilibsə, taymer ləğv edildi və ya zamanlayıcı yivinə xitam verildi
Java Timer: Cədvəldən istifadə edərək tapşırıq təyin edin (vəzifə, vaxt)
Müəyyən bir zamanda java timerindən istifadə edərək tapşırığı planlaşdırmağın sadə bir nümunəsinə baxaq. Əvvəlcə yenisini yaradırıq timer obyekt 't'. Sonra bir Taymer Tapşırığı "tapşırıq" obyektinə üstünlük verin və lazımlı kodu təmin edin run metod. Daha sonra təyin olunmuş vaxtda (burada, cari vaxtda) taymerdən istifadə edərək tapşırığı planlaşdırırıq.
import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TimerDemo { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask(){ public void run() { for(int i=1;i<=5;i++) { System.out.println("Task : " + i); } } }; t.schedule(task, new Date()); } }
Task : 1 Task : 2 Task : 3 Task : 4 Task : 5
Java Timer: Cədvəldən istifadə edərək tapşırıq təyin edin (vəzifə, gecikmə)
Aşağıdakı nümunədə, 5 saniyəlik bir gecikmədən sonra icrası üçün tapşırıq planlaşdırırıq. Çıxışı görürsənsə, Java Timer-in 5 saniyəlik bir gecikmədən sonra tapşırığı yerinə yetirdiyini aydın şəkildə görə bilərsiniz.
import java.util.Timer; import java.util.TimerTask; import java.util.Date; public class TimeDemoDelay { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask() { public void run() { System.out.println("Timer executed at time: "+ new Date()); } }; System.out.println("Current time: " + new Date()); t.schedule(task, 5000); } }
Current time: Sat Jun 27 16:01:03 IST 2020 Timer executed at time: Sat Jun 27 16:01:08 IST 2020
Java Timer: Cədvəldən istifadə edərək tapşırıq planlaşdırın (vəzifə, vaxt, müddət)
Aşağıdakı nümunədə müəyyən bir vaxtdan başlayaraq müntəzəm vaxt aralığında təkrar icra üçün tapşırıq təyin edə biləcəyimizi görə bilərik.
Burada Java Timer cari vaxtdan başlayaraq tapşırığı yerinə yetirir və hər 2 saniyədən sonra icrasına davam edir. Tapşırığı müəyyən bir vaxtdan sonra ləğv etmək istədiyimiz üçün zəng edirik ləğv etmək müəyyən bir şərtə əsaslanan metod, əks halda davamlı olaraq icra ediləcəkdir. Nümunəmizdə şərti i = 5-ə qədər təyin etdik. Bu həddə çatdıqda, Java Timer tapşırığı ləğv edəcək və icrasını dayandıracaq.
import java.util.Timer; import java.util.TimerTask; import java.util.Date; public class TimerDemo1 { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask() { int i=1; public void run() { System.out.println("Timer executed at :" + new Date()); if(i==5) t.cancel(); i=i+1; } }; System.out.println("Current time: " + new Date()); t.schedule(task, new Date(), 2000); } }
Current time: Sat Jun 27 16:13:33 IST 2020 Timer executed at :Sat Jun 27 16:13:33 IST 2020 Timer executed at :Sat Jun 27 16:13:35 IST 2020 Timer executed at :Sat Jun 27 16:13:37 IST 2020 Timer executed at :Sat Jun 27 16:13:39 IST 2020 Timer executed at :Sat Jun 27 16:13:41 IST 2020
Java Timer: Cədvəldən istifadə edərək tapşırıq təyin edin (vəzifə, gecikmə, müddət)
Aşağıdakı nümunədə, müəyyən bir gecikmədən sonra (5 saniyədir) təkrar icrası üçün bir vəzifə planlaşdırırıq və Java Timer bu vəzifəni müəyyən bir zaman aralığında icra edir. Vaxt intervalı 1 saniyə olsa da, mövzu hər 2 saniyədən sonra başqa birinə görə yerinə yetirilir sap 2 saniyə yatır. Beləliklə, yalnız 1-ci tapşırığın cəmi 3 saniyə gecikmə ilə icra edildiyini görürsünüzsə, qalan 2 saniyədə bir icra olunur.
import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TimerDelayPeriod { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask() { int i=1; public void run() { System.out.println("Timer executed at :" + new Date()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(i==5) t.cancel(); i=i+1; } }; System.out.println("Current time: " + new Date()); t.schedule(task, 5000, 1000); } }
Current time: Sun Jun 28 20:04:37 IST 2020 Timer executed at :Sun Jun 28 20:04:42 IST 2020 Timer executed at :Sun Jun 28 20:04:44 IST 2020 Timer executed at :Sun Jun 28 20:04:46 IST 2020 Timer executed at :Sun Jun 28 20:04:48 IST 2020 Timer executed at :Sun Jun 28 20:04:50 IST 2020
SchedAtFixedRate istifadə edərək tapşırıq planlaşdırın (tapşırıq, vaxt, müddət)
Bu metod müəyyən bir vaxtdan başlayaraq dövri bir fasilə ilə sabit bir sürətlə təkrarlanmasını istədiyimiz zaman faydalıdır. Aşağıdakı nümunədə tapşırıq icra müddətinin 1 saniyə olduğunu görə bilərik, lakin Java Timer, 3 saniyə yatan başqa bir mövzu sayəsində hər 3 saniyədə bir tapşırıq yerinə yetirir. Bu 1 saniyə 3 saniyə həddini əhatə etdiyi üçün əlavə 1 saniyə gözləmir və dərhal növbəti tapşırıqların icrasına başlayır.
import java.util.Timer; import java.util.TimerTask; import java.util.Date; public class TimerFixedRateDemo { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask() { int i=1; public void run() { System.out.println("Task executed at time: " + new Date()); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(i==5) t.cancel(); i=i+1; } }; t.scheduleAtFixedRate(task, new Date(), 1000); } }
Task executed at time: Sun Jun 28 22:54:00 IST 2020 Task executed at time: Sun Jun 28 22:54:03 IST 2020 Task executed at time: Sun Jun 28 22:54:06 IST 2020 Task executed at time: Sun Jun 28 22:54:09 IST 2020 Task executed at time: Sun Jun 28 22:54:12 IST 2020
SchedAtFixedRate istifadə edərək tapşırıq planlaşdırın (tapşırıq, gecikmə, müddət)
Burada, 2 saniyəlik periyodik fasilə ilə 1 saniyəlik gecikmədən sonra tapşırıq icrasına başlayırıq. Java Timer, 3 saniyə yatan başqa bir mövzu icrası səbəbindən işi 3 saniyə müddətində icra edir. 1 saniyəlik fasilə bu yuxu həddi içərisində olduğundan, növbəti mövzu icrası dərhal gecikmədən başlayır.
import java.util.Timer; import java.util.TimerTask; import java.util.Date; public class TimerFixedRateDemo { public static void main(String[] args) { Timer t = new Timer(); TimerTask task = new TimerTask() { int i=1; public void run() { System.out.println("Task executed at time: " + new Date()); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(i==5) t.cancel(); i=i+1; } }; System.out.println("Current time: " + new Date()); t.scheduleAtFixedRate(task, 2000, 1000); } }
Current time: Sun Jun 28 22:55:59 IST 2020 Task executed at time: Sun Jun 28 22:56:01 IST 2020 Task executed at time: Sun Jun 28 22:56:04 IST 2020 Task executed at time: Sun Jun 28 22:56:07 IST 2020 Task executed at time: Sun Jun 28 22:56:10 IST 2020 Task executed at time: Sun Jun 28 22:56:13 IST 2020
Öz Java TimerTask Sınıfının yaradılması
Abstrakt sinfi uzadaraq öz TimerTask sinifimizi yarada bilərik Taymer Tapşırığı aşağıdakı nümunədə göstərildiyi kimi. Hər bir TimerTask mücərrəd sinifində a run hər hansı bir əməliyyatı yerinə yetirmək üçün ləğv etməyimiz lazım olan metod. Aşağıdakı nümunədə Java Timer tapşırığı hər saniyədə icra edir və 5 saniyədən sonra tapşırıq icrası ləğv olunur və dayanır.
import java.util.Timer; import java.util.TimerTask; import java.util.Date; public class TimerTaskDemo extends TimerTask { public void run() { System.out.println("Executing task from my own timer task class"); } public static void main(String[] args) throws InterruptedException { Timer t = new Timer(); TimerTask task = new TimerTaskDemo(); t.schedule(task, new Date(),1000); Thread.sleep(5000); t.cancel(); System.out.println("Timer cancelled"); } }
Executing task from my own timer task class Executing task from my own timer task class Executing task from my own timer task class Executing task from my own timer task class Executing task from my own timer task class Timer cancelled