CodeBlanks Logo Icon CodeBlanks

Thread

Thread ile iş parçacığı oluşturmayı öğrenirsin.

Thread

Thread sınıfı, Java'da bir iş parçacığını temsil eder. Bir sınıf Thread'i kalıtım alıp run() yöntemini geçersiz kılarak yeni bir iş parçacığı tanımlayabilirsin.

class HelloThread extends Thread {
    @Override
    public void run() {
        System.out.println("Hello");
    }
}

Bu sınıfın bir örneği start() çağrıldığında ayrı bir iş parçacığında çalışır. run() doğrudan çağrılırsa sıradan bir yöntem gibi çalışır; bu, hata ayıklama için yararlıdır. Java 21, platform iş parçacıkları ve sanal iş parçacıklarını destekler.

Thread yaşam döngüsü

Bir Thread'in temel durumları: NEW (oluşturuldu), RUNNABLE (çalışıyor), BLOCKED (bekliyor), WAITING (bekliyor) ve TERMINATED (bitti).

Thread t = new HelloThread();
System.out.println(t.getState());
// NEW

start() çağrılınca durum RUNNABLE olur. İş parçacığı bittiğinde TERMINATED olur. getState() ile anlık durumu öğrenebilirsin. Bu, eşzamanlı hataları ayıklamak için yararlıdır.

Uygulama HelloThread sınıfını yaz

Bir HelloThread sınıfı tanımla; Thread'i kalıtım alsın ve @Override ile run() yöntemini geçersiz kılsın. run() gövdesi System.out.println("Hello from thread") çağrısı yapsın. Bir ThreadDemo sınıfında main metodu yaz; HelloThread örneği oluştur ve run() yöntemini doğrudan çağır (başlatma).

Başlangıç kodu

Main.java
// HelloThread sınıfını Thread kalıtımıyla tanımla

// run() yöntemini geçersiz kıl ve println çağır

// ThreadDemo sınıfında main yaz ve run() çağır

Örnek çözüm

Main.java
class HelloThread extends Thread {
    @Override
    public void run() {
        System.out.println("Hello from thread");
    }
}

class ThreadDemo {
    public static void main(String[] args) {
        new HelloThread().run();
    }
}

Beklenen çıktı

Hello from thread

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Yeni bir Thread tanımlamak için hangi yöntem geçersiz kılınır?

  • start()
  • join()
  • run() Doğru cevap
  • sleep()

Açıklama: Thread'in gövdesi run() yönteminde tanımlanır.

2 Thread kalıtımını tamamla

Soru
class HelloThread ____ Thread {
    @Override
    public void run() {
        System.out.println("Hello");
    }
}
Cevap
class HelloThread extends Thread {
    @Override
    public void run() {
        System.out.println("Hello");
    }
}

Açıklama: Thread'i kalıtım almak için extends kullanılır.

3 Thread yöntemlerini eşleştir

Kavram Anlamı
start() Yeni iş parçacığını başlatır
run() Görevin gövdesini tanımlar
join() Bitmesini bekler
sleep(ms) Belirli süre bekler

İleri seviye bölümündeki tüm dersler