Jinis blumbang tugas liyane yaiku blumbang tugas sing dijadwal. Miturut jeneng, kita bisa nganggep manawa nggunakake jinis iki kanggo gawe jadwal nalika tugas tartamtu kudu diluncurake.

Jinis layanan iki migunani nalika kita duwe tugas kanggo miwiti kegiatan sawise sawetara wektu wis liwati utawa kita pengin gawe jadwal tugas ambalan.

Kanggo nggunakake siji, kita nelpon Executors.newScheduledThreadPool(1) .

Kita bakal ngomong babagan paramèter mengko. Nanging saiki, sing kudu dingerteni yaiku yen metode iki diarani, entuk obyek ScheduledExecutorService .

ScheduledExecutorService minangka antarmuka sing ngluwihi ExecutorService .

Cara ing ngisor iki katon ing antarmuka iki:

Metode Panjelasan

ScheduledFuture<?>
schedule(Runnable command,
                                  long delay, TimeUnit unit);
Nggawe lan nglakokake tumindak siji-wektu sing mlaku sawise wektu tundha sing ditemtokake.

<V> ScheduledFuture<V>
schedule(Callable<V> callable,
                                      long delay, TimeUnit unit);
Nggawe lan nglakokake aScheduledFutureobyek sing dieksekusi sawise wektu tundha sing ditemtokake.

ScheduledFuture<?>
scheduleAtFixedRate(Runnable command,
                                             long initialDelay,
                                             long period,
                                             TimeUnit unit);
Nggawe lan nglakokake tumindak ambalan sing mlaku dhisik sawise wektu tundha dhisikan sing ditemtokake lan banjur maneh sawise wektu sing ditemtokake. Ing tembung liya, eksekusi bakal diwiwiti sawise initialDelay , banjur initialDelay + period , banjur initialDelay + 2 * period , lan sateruse.

ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
                                                long initialDelay,
                                                long delay,
                                                TimeUnit unit);
Nggawe lan nglakokaké tumindak ambalan sing nglakokaké pisanan sawise wektu tundha dhisikan tartamtu, lan banjur maneh karo wektu tundha tartamtu antarane completion saka siji eksekusi lan wiwitan sabanjuré.

Dadi antarmuka ngidini kita mbukak tugas ing interval biasa utawa sawise sawetara wektu tundha.

Liyane babagan cara newScheduledThreadPool.

Kita bisa nelpon kanthi sawetara cara:


newScheduledThreadPool(int corePoolSize)
corePoolSize punika nomer Utas kanggo tetep ing blumbang, sanajan lagi nganggur.

newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)

corePoolSize punika nomer Utas kanggo tetep ing blumbang, sanajan lagi nganggur.

threadFactory minangka pabrik sing digunakake nalika nggawe benang anyar.

Loro-lorone cara bakal nggawe blumbang thread sing bisa gawe jadwal tumindak kanggo nglakokaké sawise wektu tundha tartamtu utawa periodik.

Ayo goleki conto kanggo ndeleng cara kerja ScheduledThreadPool .

Contone, umpamane kita duwe tugas kanggo mriksa email saben 5 detik, nanging mriksa iki kudu ora mengaruhi program utama lan mbutuhake konsumsi sumber daya tambahan.

Kita duwe kelas tugas sing simulasi mriksa email.


public class Task implements Runnable {
   @Override
   public void run() {
       System.out.println("Checking email...");
   }
}

Sabanjure, kita nggawe blumbang thread lan jadwal mriksa.


ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
executorService.scheduleAtFixedRate(new Task(), 0, 5, TimeUnit.SECONDS);

Ing output, saben 5 detik kita ndeleng:

Priksa email...

Umumé, kita bisa nggunakake blumbang kuwi kanggo nindakake tugas "housekeeping" periodik, kaya ing conto. Tugas housekeeping minangka tugas sing kudu ditindakake sanajan program utama ditindakake.