CodeBlanks Logo Icon CodeBlanks

Özet - Multithreading

Thread, Runnable ve synchronized'ı birleştirerek bir sayaç yazarsın.

Özet - Multithreading

Bu grupta Java'nın temel iş parçacığı araçlarını gördün: Thread sınıfı, Runnable arayüzü, start ve join, synchronized ile karşılıklı dışlama ve wait/notify ile iş parçacığı iletişimi.

Şimdi bunları bir mini göreve birleştireceksin: bir TaskQueue yapısı kuracaksın. Bu özet, eşzamanlı bir veri yapısının nasıl yazıldığını gösterir.

Uygulama TaskQueue ile synchronized uygula

Bir TaskQueue sınıfı tanımla; private int size = 0 alanı olsun. public synchronized void add() yöntemi size++ yapsın. public synchronized int size() yöntemi size döndürsün. Bir QueueDemo sınıfında main yaz; TaskQueue örneği oluştur, add() yöntemini üç kez çağır ve size() sonucunu yazdır.

Başlangıç kodu

Main.java
// TaskQueue sınıfını tanımla (size alanı, synchronized add ve size)

// QueueDemo sınıfında main yaz; add'i üç kez çağır ve size sonucunu yazdır

Örnek çözüm

Main.java
class TaskQueue {
    private int size = 0;
    public synchronized void add() {
        size++;
    }
    public synchronized int size() {
        return size;
    }
}

class QueueDemo {
    public static void main(String[] args) {
        TaskQueue q = new TaskQueue();
        q.add();
        q.add();
        q.add();
        System.out.println(q.size());
    }
}

Beklenen çıktı

3

Uygulama WorkerThread ile Thread kalıtımı

Bir WorkerThread sınıfı tanımla; Thread'i kalıtım alsın ve @Override public void run() yönteminde System.out.println("Worker ready") çağrısı yapsın. Bir WorkerDemo sınıfında main yaz; WorkerThread örneği oluştur ve run() yöntemini doğrudan çağır.

Başlangıç kodu

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

// run() içinde println çağır

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

Örnek çözüm

Main.java
class WorkerThread extends Thread {
    @Override
    public void run() {
        System.out.println("Worker ready");
    }
}

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

Beklenen çıktı

Worker ready

Soru ve cevaplar

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

1 Bir iş parçacığının bitmesini beklemek için ne kullanılır?

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

Açıklama: join() iş parçacığı bitene kadar bekler.

2 Multithreading özetini eşleştir

Kavram Anlamı
Thread İş parçacığı sınıfı
Runnable Görev arayüzü
synchronized Karşılıklı dışlama
wait/notify İletişim

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