ScheduledThreadPoolExecutor Sınıfı

java.util.concurrent.ScheduledThreadPoolExecutor, ThreadPoolExecutor'un bir alt sınıfıdır ve ayrıca komutları belirli bir gecikmeden sonra çalıştırmak veya periyodik olarak yürütmek üzere zamanlayabilir.

ScheduledThreadPoolExecutor Yöntemleri

Sr.No. Yöntem ve Açıklama
1

protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)

Çağrılabilir bir işlemi yürütmek için kullanılan görevi değiştirir veya değiştirir.

2

protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)

Çalıştırılabilir bir dosyayı yürütmek için kullanılan görevi değiştirir veya değiştirir.

3

void execute(Runnable command)

Komutu sıfır gerekli gecikme ile yürütür.

4

boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()

Bu yürütücü kapatılmış olsa bile mevcut periyodik görevleri yürütmeye devam edip etmeme konusundaki ilkeyi alır.

5

boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()

Bu yürütücü kapatıldığında bile mevcut gecikmiş görevlerin yürütülüp yürütülmeyeceğine ilişkin ilkeyi alır.

6

BlockingQueue<Runnable> getQueue()

Bu yürütücü tarafından kullanılan görev kuyruğunu döndürür.

7

boolean getRemoveOnCancelPolicy()

İptal edilen görevlerin iptal anında iş kuyruğundan hemen kaldırılıp kaldırılmayacağına ilişkin ilkeyi alır.

8

<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)

Verilen gecikmeden sonra etkinleştirilen bir ScheduledFuture oluşturur ve yürütür.

9

ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)

Verilen gecikmeden sonra etkinleştirilen tek adımlı bir eylem oluşturur ve yürütür.

10

ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)

İlk olarak verilen ilk gecikmeden sonra ve ardından verilen süre ile etkinleştirilen periyodik bir eylem oluşturur ve yürütür; yani çalıştırmalar ilk Gecikmeden sonra ilk Gecikme + döneminden, sonra ilk Gecikme + 2 * döneminden sonra başlayacaktır.

11

ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)

İlk olarak verilen ilk gecikmeden sonra ve ardından bir yürütmenin sona ermesi ile bir sonrakinin başlaması arasında verilen gecikme ile etkinleştirilen periyodik bir eylem oluşturur ve yürütür.

12

void setContinueExistingPeriodicTasksAfterShutdownPolicy (boolean value)

Bu yürütücü kapatıldığında bile mevcut periyodik görevleri yürütmeye devam edip etmeme politikasını ayarlar.

13

void setExecuteExistingDelayedTasksAfterShutdownPolicy (boolean value)

Bu yürütücü kapatıldığında bile mevcut gecikmiş görevlerin yürütülüp yürütülmeyeceğine ilişkin politikayı ayarlar.

14

void setRemoveOnCancelPolicy(boolean value)

İptal edilen görevlerin iptal anında iş kuyruğundan hemen kaldırılıp kaldırılmayacağına ilişkin politikayı ayarlar.

15

void shutdown()

Önceden gönderilen görevlerin yürütüldüğü, ancak hiçbir yeni görevin kabul edilmeyeceği düzenli bir kapatma başlatır.

16

List<Runnable> shutdownNow()

Etkin olarak yürütülen tüm görevleri durdurma girişimleri, bekleyen görevlerin işlenmesini durdurur ve yürütülmeyi bekleyen görevlerin bir listesini döndürür.

17

<T> Future<T> submit(Callable<T> task)

Yürütme için değer döndüren bir görev gönderir ve görevin bekleyen sonuçlarını temsil eden bir Gelecek döndürür.

18

Future<?> submit(Runnable task)

Yürütülmesi için Çalıştırılabilir bir görevi gönderir ve bu görevi temsil eden bir Gelecek döndürür.

19

<T> Future<T> submit(Runnable task, T result)

Yürütülmesi için Çalıştırılabilir bir görevi gönderir ve bu görevi temsil eden bir Gelecek döndürür.

Misal

Aşağıdaki TestThread programı, ScheduledThreadPoolExecutor arayüzünün iş parçacığı tabanlı ortamda kullanımını gösterir.

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");      
      }
   }
}

Bu, aşağıdaki sonucu verecektir.

Çıktı

beep
beep
beep
beep