ScheduledThreadPoolExecutor Class
java.util.concurrent.ScheduledThreadPoolExecutor adalah subclass dari ThreadPoolExecutor dan juga dapat menjadwalkan perintah untuk dijalankan setelah penundaan tertentu, atau untuk dieksekusi secara berkala.
ScheduledThreadPoolExecutor Metode
Sr.No. | Metode & Deskripsi |
---|---|
1 | protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task) Mengubah atau mengganti tugas yang digunakan untuk menjalankan callable. |
2 | protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task) Mengubah atau mengganti tugas yang digunakan untuk menjalankan runnable. |
3 | void execute(Runnable command) Jalankan perintah tanpa penundaan yang diperlukan. |
4 | boolean getContinueExistingPeriodicTasksAfterShutdownPolicy() Mendapatkan kebijakan tentang apakah akan terus menjalankan tugas berkala yang ada meskipun pelaksana ini telah dimatikan. |
5 | boolean getExecuteExistingDelayedTasksAfterShutdownPolicy() Mendapatkan kebijakan tentang apakah akan menjalankan tugas tertunda yang ada meskipun pelaksana ini telah dimatikan. |
6 | BlockingQueue<Runnable> getQueue() Mengembalikan antrian tugas yang digunakan oleh pelaksana ini. |
7 | boolean getRemoveOnCancelPolicy() Mendapat kebijakan tentang apakah tugas yang dibatalkan harus segera dihapus dari antrian pekerjaan pada saat pembatalan. |
8 | <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) Membuat dan menjalankan ScheduledFuture yang menjadi aktif setelah penundaan tertentu. |
9 | ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) Membuat dan menjalankan aksi satu jepretan yang menjadi aktif setelah penundaan tertentu. |
10 | ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) Membuat dan menjalankan tindakan periodik yang menjadi aktif pertama setelah penundaan awal tertentu, dan kemudian dengan periode tertentu; Artinya eksekusi akan dimulai setelah initialDelay lalu initialDelay + period, lalu initialDelay + 2 * period, dan seterusnya. |
11 | ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) Membuat dan menjalankan tindakan periodik yang menjadi aktif pertama setelah penundaan awal yang diberikan, dan kemudian dengan penundaan yang diberikan antara penghentian satu eksekusi dan dimulainya eksekusi berikutnya. |
12 | void setContinueExistingPeriodicTasksAfterShutdownPolicy (boolean value) Menyetel kebijakan tentang apakah akan terus menjalankan tugas berkala yang ada meskipun pelaksana ini telah dimatikan. |
13 | void setExecuteExistingDelayedTasksAfterShutdownPolicy (boolean value) Menyetel kebijakan tentang apakah akan menjalankan tugas tertunda yang ada meskipun pelaksana ini telah dimatikan. |
14 | void setRemoveOnCancelPolicy(boolean value) Menetapkan kebijakan apakah tugas yang dibatalkan harus segera dihapus dari antrian pekerjaan pada saat pembatalan. |
15 | void shutdown() Memulai penghentian secara tertib di mana tugas yang dikirimkan sebelumnya dijalankan, tetapi tidak ada tugas baru yang akan diterima. |
16 | List<Runnable> shutdownNow() Mencoba menghentikan semua tugas yang sedang dijalankan secara aktif, menghentikan pemrosesan tugas menunggu, dan mengembalikan daftar tugas yang sedang menunggu eksekusi. |
17 | <T> Future<T> submit(Callable<T> task) Mengirimkan tugas yang menghasilkan nilai untuk dieksekusi dan mengembalikan Future yang mewakili hasil tugas yang tertunda. |
18 | Future<?> submit(Runnable task) Mengirimkan tugas Runnable untuk dieksekusi dan mengembalikan Future yang mewakili tugas itu. |
19 | <T> Future<T> submit(Runnable task, T result) Mengirimkan tugas Runnable untuk dieksekusi dan mengembalikan Future yang mewakili tugas itu. |
Contoh
Program TestThread berikut menunjukkan penggunaan antarmuka ScheduledThreadPoolExecutor di lingkungan berbasis thread.
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class TestThread {
public static void main(final String[] arguments) throws InterruptedException {
final ScheduledThreadPoolExecutor scheduler =
(ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);
final ScheduledFuture<?> beepHandler =
scheduler.scheduleAtFixedRate(new BeepTask(), 2, 2, TimeUnit.SECONDS);
scheduler.schedule(new Runnable() {
@Override
public void run() {
beepHandler.cancel(true);
scheduler.shutdown();
}
}, 10, TimeUnit.SECONDS);
}
static class BeepTask implements Runnable {
public void run() {
System.out.println("beep");
}
}
}
Ini akan menghasilkan hasil sebagai berikut.
Keluaran
beep
beep
beep
beep