Java

Java’da Multithreading ( Thread Pool, ExecutorService) – 5

Thread işlemleri yaparken Thread Pool nasıl türleri örnekleri Avantajları nelerdir Uygulama örneği ile göstereceğim.

Thread Pool’a Neden İhtiyaç Duyarız?


Programımızda kullandığımız thread’leri kullanırken her seferinde yeniden oluşturma işlemi oldukça maliyetlidir. Ancak önceden bir thread pool yaparak ihtiyaca göre o pool’dan alıp işlem bitince tekrar o pool’daki thread’i kullanmak bizim ölçülebilir bir maliyet ile birlikte gereksiz kaynak tüketiminin de önüne geçiy

Thread pool’daki threadlerimiz sırası ile çalışmakta ve işi biten thread’ler tekrar kullanılmak üzere thread pool içerisinde beklemeye devam etmektedir. Programızda thread oluşturmak yerine thread pool’undan thread çağırmamız yeterli oluyor.

ThreadPool Türleri


Java’da ThreadPool oluşturmak için farklı ihtiyaçlara göre farklı yaklaşımlar bulunmakta. Şimdi bunları biraz açıklayalım.

  • Fixed
    Belirli bir thread sayısı verdiğimiz eğer tüm thread’ler dolu ise bekletilen ve en çok tercih edilen yaklaşım.
  • Scheduled
    Belirli bir zaman aralığıyla yapılan işlemlerde tercih edilen thread yapısıdır.
  • Single
    Adından da anlaşıldığı üzere bir adet thread vardır.
    Tüm işler için tek bir thread yapısı oluşturulu ve tek bir iş için tercih kullanmalıyız

ExecutorService


Thread Pool yapabiliyoruz. ExecutorService kullanarak aynı anda kaç thread’in çalışması gerektiğini belirleyen örneğimizi yazalım.

private void executorServiceNewFixedThreadPool() {

    ExecutorService executorService = Executors.newFixedThreadPool(5);

    for (int a = 0; a < 5000; a++) {
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                System.out.println("Çalışan Executer Service: " + Thread.currentThread().getName())
            }
        });
    }
}

Çıktımıza bakalım.

ExecuterServicee: pool-7-thread-5 
ExecuterServicee: pool-7-thread-2 
ExecuterServicee: pool-7-thread-1 
ExecuterServicee: pool-7-thread-3 
ExecuterServicee: pool-7-thread-4 
ExecuterServicee: pool-7-thread-1 
ExecuterServicee: pool-7-thread-3

Kod örneğinde tanımladığımız thread sayısından fazla olmamak şartıyla 5000 işlem için sadece 5 thread çalıştı. İşi biten tekrar havuza geldi ve threadimiz tekrar çalıştı.

DAHA FAZLASI:Java

İlgini Çekebilir

YORUM YAP

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir