6 Ocak 2020 Pazartesi

Executors.newSingleThreadExecutor metodu - Unbounded Kuyruk Kullanır

Giriş
Executors.newFixedThreadPool() ile Executors.newSingleThreadExecutor() aynı işi yapıyor gibi görünüyorlar ancak altta biraz farklılar. Açıklaması şöyle
In case when a thread dies due to some error or exception at the time of executing a task, a new thread is created, and all the subsequent tasks execute in that new one.

newSingleThreadExecutor metodu

Örnek

Şöyle yaratırız.
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
newSingleThreadExecutor vs newFixedThreadPool
Açıklaması şöyle. Bu metod ile döndürülen ExecutorService nesnesi ThreadPoolExecutor sınıfından kalıtmıyor. Dolayısıyla döndürülen nesneyi ThreadPoolExecutor sınıfına cast etme ve özelliklerini değiştirme imkanı yok.
It is essentially the same thing as an Executors.newSingleThreadExecutor() except that the latter is not reconfigurable, as indicated in the javadoc, whereas the former is if you cast it to a ThreadPoolExecutor.
Metodun içi bir ara şöyleydi
public static ExecutorService newSingleThreadExecutor() {
  return new FinalizableDelegatedExecutorService
    (new ThreadPoolExecutor(1, 1,
                            0L, TimeUnit.MILLISECONDS,
                            new LinkedBlockingQueue<Runnable>()));
}
newSingleThreadExecutor metodu - ThreadFactory
Örnek
Şöyle yaparız.
class YourThreadFactory implements ThreadFactory {
   public Thread newThread(Runnable r) {
     return new Thread(r, "Your name");
   }
 }

Executors.newSingleThreadExecutor(new YourThreadFactory()).submit(someRunnable);

Hiç yorum yok:

Yorum Gönder