Özet - Multithreading
- Java kursu
- İleri seviye
- Ders 60/82
- 5 dk
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
// 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
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
// 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
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 |