İçeriğe geç

Java Multithreading ve Concurrency: Paralel Programlama Rehberi

25.05.2024 4,858 okunma

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

java multithreading java thread java concurrency java executorservice java completablefuture
İleri Düzey Java Eğitimi hakkında bilgi almak ister misiniz?

Birebir özel yüz yüze eğitim yada uzaktan eğitim, esnek ders saatleri ile Pendik Kurtköy'de.