Giriş
Executors.newFixedThreadPool() ile Executors.newSingleThreadExecutor() aynı işi yapıyor gibi görünüyorlar ancak altta biraz farklılar. Açıklaması şöyle
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