Java

Java’da Multithreading (Thread ve Runnable) – 1

Bu yazıda Java’da Multithreading işlemlere neden ihtiyaç duyarız ve nasıl kullanmalıyız bir seri halide açıklayacağım.

Java’da kodumuzun aynı anda birden fazla işlem yapmasını istediğimizde zaman Thread’leri kullanmamız gerekmektedir.

Thread’leri kullanmanın iki yolu bulunmaktadır.

  • Thread
  • Runnable

Thread yönteminde extend ederek, Runnable yönetimde ise implement edip run metodunu override ederek kullanabiliyoruz.

Örnek olarak;

public class Deneme extends Thread {
    @Override
    public void run() {
         
    }
}
public class Deneme implements Runnable {
    @Override
    public void run() {
           
    }
}

run metodu thread’in çalışacağı zaman kullanılan bir metotdur.

Thread sınıfını extend ederek kullanma yöntemi tercih edilen bir yöntem değildir. Çünkü yazılımızdaki iş akışı içerisinde sınıfımızın katılım gelişimini engellemiş oluyoruz. Bir sınıf birden fazla extend işlemi olamayağından kısıtlamış olmaktayız. O yüzden Runnable’ı implement ederek kullanmayı tercih etmemiz daha doğru olacaktır.

Runnable’ı kullanarak bir örnek yapalım.

public class Deneme implements Runnable{
    String name;

    public Deneme(String threadname)
    {
        name = threadname;
    }

    public void run()
    {
        try {
            for (int i = 5; i > 0; i--) {
                System.out.println(name + ": " + i);
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            System.out.println(name + "Hata");
        }
        System.out.println(name + " cikiliyor.");
    }
}

Main sınıfımızı yazalım.

public class Main {
    public static void main(String[] args) {
      
        Deneme deneme = new Deneme("1. thread =>  ");
        Deneme deneme1 = new Deneme("2. thread => ");
        Deneme deneme2 = new Deneme("3. thread => ");

        Thread thread=new Thread(deneme);
        Thread thread1=new Thread(deneme1);
        Thread thread2=new Thread(deneme2);

        thread.start();
        thread1.start();
        thread2.start();

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            System.out.println("Hata");
        }
        System.out.println("Thread bitti.");

Çıktıya bakalım ve sonrasında ne yaptığımıza bir bakalım.

2. thread => : 5
1. thread =>  : 5
3. thread => : 5
1. thread =>  : 4
2. thread => : 4
3. thread => : 4
2. thread => : 3
1. thread =>  : 3
3. thread => : 3
2. thread => : 2
1. thread =>  : 2
3. thread => : 2
1. thread =>  : 1
2. thread => : 1
3. thread => : 1
2. thread =>  cikiliyor.
3. thread =>  cikiliyor.
1. thread =>   cikiliyor.

Yukarıdaki örnekte 3 adet thread oluşturduk ve start diyerek başlattık. Çıktıya bakacak olursanız belirsiz bir sıra içerisinde çalışıyor ve bu sıra her çalışma zamanında her zaman değişmesi anlamına gelmektedir.

Thread’lerin çalışma planını JVM belirlemekte. CPU’nun durumuna göre farklı çıktılar oluşur.

DAHA FAZLASI:Java

İlgini Çekebilir

YORUM YAP

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