Açıklaması şöyle
Bu sınıf bir veri yapısı olmadığı için aslında sadece ExecutorService ile işe yarar.SynchronousQueue is an interesting BlockingQueue that's not really a queue. It's not even a data structure per se.
Örnek
Elimizde şöyle bir kod olsun
Açıklaması şöyle. Burada core thread sayısı ve max thread sayısı hep 2 verildiği için yeni thread yaratılamıyorBlockingQueue<Runnable> queue = new SynchronousQueue<>();ExecutorService executorService = new ThreadPoolExecutor(2, 2,0L, TimeUnit.MILLISECONDS,queue);
ÖrnekWe created a thread pool with two threads and a SynchronousQueue in front of it. Because SynchronousQueue is essentially a queue with 0 capacity, such ExecutorService will only accept new tasks if there is an idle thread available. If all threads are busy, new task will be rejected immediately and will never wait. This behavior might be desirable when processing in background must start immediately or be discarded.
Elimizde şöyle bir kod olsun. Burada core thread sayısı 0, max thread sayısı ise Integer.MAX. eğer boşta (idle) thread yoksa, kuyruk hemen doluyum cevabı vereceği için yeni bir thread yaratılır.
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
Hiç yorum yok:
Yorum Gönder