Mündəricat
Planlaşdırılmış İcraçı Xidmət
Java-dakı ScheduledExecutionService interfeysi, ExecutionService-in alt interfeysi olan bir paralel proqramdır. Bu interfeys java.util.concurrent paketində mövcuddur. Bir işi planlaşdırmaq və ya vaxtaşırı və ya müəyyən bir müddət keçdikdən sonra icra etmək istədikdə, ScheduledExecutionService interfeysindən istifadə edə bilərik. Timer tapşırığına bənzəyir, lakin bu interfeys a çox oxlu ətraf mühit.
public interface ScheduledExecutorService extends ExecutorService
Hiyerarşi
ScheduledThreadPoolExecutor
ScheduledExecutionService interfeysini həyata keçirən sinifdir. Bu interfeys, İcraçı interfeysini genişləndirən İcraçı Xidməti interfeysinin uşaq interfeysidir.
metodika
Aşağıda ScheduledExecutionService interfeysinin metodları verilmişdir.
Üsul | təsvir |
---|---|
Planlaşdırılmış Gələcək cədvəli (Çağırılan c, uzun gecikmə, TimeUnit vaxt birliyi) | Sabit gecikmədən sonra dəyər qaytaran tapşırıq göndərir |
PlanlaşdırılmışGələcəyin cədvəli (Runnable əmri, uzun gecikmə, TimeUnit vaxt birliyi) | Sabit gecikmədən sonra imkan verən tək vuruşlu tapşırıq göndərir |
PlanlaşdırılmışGələcək cədvəliAtFixedRate (RUnnable əmri, uzun başlanğıcGecikmə, uzun müddət, TimeUnit vaxt birliyi) | İntial gecikmədən sonra imkan verən və vaxtaşırı sabit vaxtda icra edən dövri bir hərəkət təqdim edir |
PlanlaşdırılmışGələcək cədvəliWithFixedDelay (Çalıştırılabilir əmri, uzun başlanğıc gecikməsi, uzun gecikmə, TimeUnit vaxt birliyi) | İnital gecikmədən sonra periyodik bir hərəkət təqdim edir və sonra müəyyən gecikmə müddətindən sonra periyodik olaraq davam edir. |
Nümunə: Java ScheduledExecutionService istifadə edərək cədvəl (Çağırılabilir)
Aşağıdakı nümunə 3 saniyəlik bir gecikmədən sonra Callable əmrindən istifadə edərək bir işi planlaşdırır. İstifadə get()
ScheduledFuture obyektinin metodu, nəticəsini əldə edə bilərik call()
metodu.
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduledExecutorServiceDemo { public static void main(String[] args) throws InterruptedException, ExecutionException { ScheduledExecutorService se = Executors.newScheduledThreadPool(5); ScheduledFuture sf = se.schedule(new Callable() { public Object call() throws Exception { System.out.println("Schedule using Callable command"); return "Done"; } }, 3, TimeUnit.SECONDS); System.out.println("Result of ScheduledFuture: " + sf.get()); se.shutdown(); } }
Schedule using Callable command Result of ScheduledFuture: Done
Nümunə: Java ScheduledExecutionService istifadə edərək cədvəl (Runnable)
Bu, Java ScheduledExecutionService interfeysindən istifadə edərək Runnable əmrini ötürərək tapşırığı planlaşdırma nümunəsidir. Bu çağırır run()
3 saniyə gecikmədən sonra metod.
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduledExecutorServiceDemo { public static void main(String[] args) throws InterruptedException, ExecutionException { ScheduledExecutorService se = Executors.newScheduledThreadPool(5); System.out.println("Start Execution"); ScheduledFuture sf = se.schedule(new Runnable() { public void run() { System.out.println("Schedule using Runnable command"); } }, 3, TimeUnit.SECONDS); se.shutdown(); } }
Start Execution Schedule using Runnable command
Misal: ScheduledExecutionService istifadə edərək schedAtFixedRate
Ayrıca, istifadə edərək vaxtaşırı bir zaman aralığında bir tapşırıq təyin edə bilərik scheduleAtFixedRate
Java ScheduleExecutionService interfeysinin metodu. Bu metod tapşırığı müəyyən bir gecikmədən sonra yerinə yetirir və sonra müəyyən bir vaxt aralığında dəfələrlə icra edir. Aşağıdakı nümunədə, zamanlayıcı 2 saniyə işləməyincə, 3 saniyəlik bir gecikmədən sonra hər 10 saniyədə printText tapşırığını planlaşdırır. 10 saniyədən sonra tapşırığı ləğv edir və ScheduledExecutionService-i bağlayır. Bu üsul zəng edənə qədər icra olunur cancel
tapşırığı ləğv edən metod.
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduleAtFixedRateDemo { public static void main(String[] args) { ScheduledExecutorService se = Executors.newScheduledThreadPool(1); ScheduledFuture sf = se.scheduleAtFixedRate(new printText(), 3, 2, TimeUnit.SECONDS); se.schedule(new Runnable() { public void run() { sf.cancel(true); se.shutdown(); System.out.println("Shutting down..."); } }, 10, TimeUnit.SECONDS); } } class printText implements Runnable { public void run() { System.out.println("Schedule"); } }
Schedule Schedule Schedule Schedule Shutting down...
Misal: schedWithFixedDelay Java ScheduledExecutionService istifadə edərək
Ayrıca istifadə edərək müəyyən bir gecikmə ilə bir vəzifə təyin edə bilərik scheduleWithFixedDelay
Java ScheduledExecutionService interfeysinin metodu. Aşağıdakı nümunə də eyni şeyi göstərir. Bu üsul zəng edənə qədər icra olunur cancel
tapşırığı ləğv edən metod.
import java.util.Date; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduleAtFixedRateDemo { public static void main(String[] args) { ScheduledExecutorService se = Executors.newScheduledThreadPool(1); ScheduledFuture sf = se.scheduleWithFixedDelay(new displayTime(), 3, 2, TimeUnit.SECONDS); se.schedule(new Runnable() { public void run() { sf.cancel(true); se.shutdown(); System.out.println("Shutting down..."); } }, 10, TimeUnit.SECONDS); } } class displayTime implements Runnable { public void run() { System.out.println("Schedule at: " + new Date()); } }
Schedule at: Sat Mar 27 15:29:00 IST 2021 Schedule at: Sat Mar 27 15:29:02 IST 2021 Schedule at: Sat Mar 27 15:29:04 IST 2021 Schedule at: Sat Mar 27 15:29:06 IST 2021 Shutting down...