Multi-Threading: Thread Sınıfı ve Runnable Arayüzü ile Paralel Programlama

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Multi-threading: Paralel Dünyaya Giriş



1. Thread Nedir? (İş Parçacığı Mantığı)​


Bir program çalıştığında işletim sistemi ona bir Process (Süreç) ayırır. Her process içinde en az bir ana iş parçacığı (Main Thread) bulunur. Multi-threading ise bu ana hattın yanına yeni yollar açarak işlerin bölünmesini sağlar.

2. Thread Oluşturma Yöntemleri​


A. Thread Sınıfını Miras Almak (Extending Thread)​

Bu yöntemde bir sınıf oluşturup Thread sınıfından türetiriz ve run() metodunu ezeriz.

Java:
class Islem extends Thread {
public void run() {
System.out.println("Thread çalışıyor: " + Thread.currentThread().getName());
}
}

// Kullanımı:
Islem t1 = new Islem();
t1.start(); // Dikkat: run() değil, start() çağrılır!

B. Runnable Arayüzünü Uygulamak (Implementing Runnable)​

Java'da bir sınıf sadece bir sınıfı miras alabildiği için (Multiple Inheritance yok), Runnable arayüzü daha esnek bir çözümdür. En çok tercih edilen yöntem budur.

Java:
class Gorev implements Runnable {
public void run() {
System.out.println("Runnable görev icra ediliyor.");
}
}

// Kullanımı:
Thread t2 = new Thread(new Gorev());
t2.start();

3. Thread Yaşam Döngüsü (Life Cycle)​


Bir thread oluşturulduğu andan yok olana kadar belirli aşamalardan geçer:

New: Thread nesnesi oluşturuldu ama henüz start() denmedi.

Runnable: Çalışmaya hazır, CPU sırası bekliyor.

Running: Şu an işlemci tarafından yürütülüyor.

Blocked/Waiting: Bir kaynağın açılmasını veya başka bir thread'in bitmesini bekliyor.

Terminated: Görevini tamamladı ve sona erdi.

4. Temel Thread Metotları​


MetotAçıklama
start()Yeni bir iş parçacığı başlatır ve run() metodunu çağırır.
sleep(ms)Thread'i belirli bir süre duraklatır (uyutur).
join()Bir thread bitene kadar çağıran thread'i bekletir.
setPriority()İşlemci önceliğini belirler (1-10 arası).

5. Kritik Kavram: Race Condition (Yarış Durumu)​


Birden fazla thread aynı anda aynı değişkeni değiştirmeye çalışırsa veri tutarsızlığı oluşur. Bunu engellemek için synchronized anahtar kelimesi kullanılır. Bu, o kod bloğuna aynı anda sadece bir thread'in girmesini sağlayan bir "kilit" mekanizmasıdır.



Sonuç

Multi-threading, uygulamanızı hızlandırabilir ancak karmaşıklığı da artırır. Yanlış yönetilen thread'ler "Deadlock" (Kilitlenme) gibi içinden çıkılmaz hatalara yol açabilir. Bu yüzden basit işler için Thread yerine modern Java'da (Java 5+) gelen ExecutorService ve Thread Pool yapılarını kullanmak daha güvenlidir.
 
Geri
Üst