Multithreading Neden Gerekli?
Modern uygulamalar tek bir işlemci çekirdeğinden çok daha fazlasını kullanabilir. Çoklu iş parçacığı (multithreading) ile bir uygulama birden fazla görevi eş zamanlı yürütebilir: dosya indirirken kullanıcı arayüzünü dondurmazsınız, yüzlerce web isteğini paralel işleyebilirsiniz. Java; Thread sınıfı, Executors ve modern Concurrent API ile kapsamlı multithreading desteği sunar.
Thread Oluşturma Yöntemleri
// 1. Runnable ile
Thread t1 = new Thread(() -> System.out.println("Thread calisiyor"));
t1.start();
// 2. ExecutorService ile (önerilen)
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> islemYap());
executor.shutdown();
Race Condition ve Synchronized
Birden fazla thread aynı kaynağa eriştiğinde veri tutarsızlığı (race condition) oluşabilir. synchronized keyword veya Lock arayüzüyle kritik bölgeler korunur:
public synchronized void sayaciArtir() {
sayac++;
}
java.util.concurrent Paketi
- AtomicInteger: Thread-safe sayaç işlemleri.
- ConcurrentHashMap: Thread-safe Map implementasyonu.
- CountDownLatch: Belirli sayıda thread tamamlanana kadar bekleme.
- CompletableFuture: Asenkron programlama ve zincirli async işlemler.
- BlockingQueue: Producer-Consumer pattern için thread-safe kuyruk.
CompletableFuture ile Asenkron Programlama
CompletableFuture<String> future = CompletableFuture
.supplyAsync(() -> apidenVeriCek())
.thenApply(veri -> veriIsle(veri))
.exceptionally(ex -> "Hata: " + ex.getMessage());
String sonuc = future.get(); // Bloklayarak bekle
Virtual Threads (Java 21)
Java 21 ile gelen Virtual Threads (Project Loom), milyonlarca hafif iş parçacığı oluşturmayı mümkün kılar. Platform thread'e kıyasla bellek kullanımı dramatik biçimde düşer; bu özellik yüksek eş zamanlılık gerektiren web servisleri için devrimsel bir gelişmedir.
Bilkey Java Programlama Kursu
Bilkey Bilişim Akademisi Java Programlama Kursu'nda multithreading, concurrent programlama, Spring Boot ve modern Java özellikleri uygulamalı olarak öğretilmektedir. Kurtköy merkezimizde Java uzmanlığına ulaşın. 0216 354 7979