Giriş
Açıklaması şöyle.
Bu sınıf ile ScheduledExecutorService aynı arayüzü sağlarlar.
Kuyruk DelayQueue olarak gerçekleştirilir , yani ilk çalışacak işlere göre sıralanmıştır.
constructor
Şöyle yaparız.
Şöyle yaparız.
ScheduledFuture<?> nesnesi döner.
Örnek
Şöyle yaparız.
Şöyle yaparız. Böylece future nesnesi ile bu işi durdurmak mümkün olur.
Şöyle yaparız.
setRejectedExecutionHandler metodu
Açıklaması şöyle.
ScheduledThreadPoolExecutor sınıfı ThreadPoolExecutor sınıfından kalıtır. Bir işin belirtilen zamanda çalışmasını sağlar. Bu sınıfı kullanıcı tarafından verilen işi ScheduledFutureTask ile sarmalar ve kuyruğa ekler.A ThreadPoolExecutor that can additionally schedule commands to run after a given delay, or to execute periodically. This class is preferable to Timer when multiple worker threads are needed, or when the additional flexibility or capabilities of ThreadPoolExecutor (which this class extends) are required.
Bu sınıf ile ScheduledExecutorService aynı arayüzü sağlarlar.
Kuyruk DelayQueue olarak gerçekleştirilir , yani ilk çalışacak işlere göre sıralanmıştır.
constructor
Şöyle yaparız.
ScheduledThreadPoolExecutor s = new ScheduledThreadPoolExecutor(1);
Şöyle yaparız.ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
afterExecute metoduŞöyle yaparız.
s = new ScheduledThreadPoolExecutor(...) {
@Override
public void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
...
}
};
scheduleAtFixedRate metodu - Runnable + initialDelay + period + timeUnitScheduledFuture<?> nesnesi döner.
Örnek
Şöyle yaparız.
s.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
...
}
}, 0, 10, TimeUnit.SECONDS);
ÖrnekŞöyle yaparız. Böylece future nesnesi ile bu işi durdurmak mümkün olur.
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.setRemoveOnCancelPolicy(true);
ScheduledFuture<?> future = executor.scheduleAtFixedRate(() -> {
...
}, 1, 2, TimeUnit.SECONDS);
shutdown metoduŞöyle yaparız.
//Cancel scheduled but not started task, and avoid new ones
myScheduler.shutdown();
//Wait for the running tasks
myScheduler.awaitTermination(30, TimeUnit.SECONDS);
//Interrupt the threads and shutdown the scheduler
myScheduler.shutdownNow();
setRemoveOnCancelPolicy metodu
ScheduledThreadPoolExecutor ve İşin İptali yazısına taşıdım
java.util.Timer ile Mukayese
java.util.Timer tek bir thread tarafından çalıştırılır. Eğer bir timer uzun sürerse diğer işlerin zamanının kaymasına sebep olabilir. Bu yüzden birden fazla thread kullanan ScheduledThreadPoolExecutor sınıfı hassas zamanlama işlerinde tercih edilmelidir.
Hiç yorum yok:
Yorum Gönder