MULTITHREADING AND CONCURRENCY IN JAVA: CONCURRENCY & THE PRODUCER-CONSUMER PROBLEM EĞİTİMİ

Üretici-tüketici problemini doğru çözün

Yarış durumları, wait/notify, bounded buffer, BlockingQueue, Condition, Semaphore ve jstack ile teşhis.

Java'da eşzamanlılığı üretici-tüketici problemiyle öğrenin: yarış durumları, wait/notify, bounded buffer, BlockingQueue, Condition, Semaphore ve thread dökümü analizi.

2 gün Orta Seviye Online / Yüz Yüze / Hibrit Sertifikalı

Eğitim Hakkında

Üretici-tüketici problemi üzerinden eşzamanlılık

Eğitim, eşzamanlı programlamanın klasik problemi olan üretici-tüketici üzerinden Java concurrency araçlarını öğretir. Yarış durumu ve bellek görünürlüğü, monitör, wait/notify ve spurious wakeup, sınırlı tampon uygulaması elle yazılır. Ardından BlockingQueue, ReentrantLock Condition ve Semaphore ile aynı problem yeniden çözülür, poison pill ile kapanış ve backpressure işlenir. jstack, jcmd ve VisualVM ile deadlock ve takılan thread'ler teşhis edilir.

Süre ve Format

2 Gün. Her gün dört modül; Yarış Durumu ve Monitörler; Modern Koordinasyon Araçları ekseninde ilerleyen uygulamalı program.

Seviye

Orta Seviye — Java'da yarış durumu, wait/notify, BlockingQueue, Condition ve Semaphore ile üretici-tüketici problemi çözümü.

Öğrenme Metodu

Aynı problem üç farklı araçla çözülür; her sürüm stres testinden geçirilir ve thread dökümleriyle incelenir.

Neden Bu Eğitim?

🔄Tek Problem Üç Çözüm

wait/notify, Condition ve BlockingQueue çözümlerini yan yana karşılaştırırsınız.

🧵Doğru Koordinasyon

Thread'ler arası bekleme ve uyandırmayı kayıpsız kurarsınız.

🩺Teşhis Becerisi

Takılan ve kilitlenen thread'leri jstack ile bulursunuz.

Anahtar Konular

java üretici tüketicijava producer consumerjava wait notifyjava blockingqueuejava concurrencyjava multithreadingjava semaphorejava condition lockjava thread güvenliğijava deadlock
“Eşzamanlılık, thread açmakta değil; onları doğru zamanda bekletmekte gizlidir.”

Ön Koşullar

Eğitimden verim almak için faydalı olacak bilgi ve ortam gereksinimleri

1
Temel Java

Sınıf, interface ve koleksiyon kullanımı bilgisi gerekir.

2
JDK 17+

JDK 17+ ve bir IDE kurulu olmalıdır.

3
Maven

Maven ile proje açıp bağımlılık eklemek faydalıdır.

4
Çok Çekirdekli Makine

Eş zamanlılık deneyleri için en az dört çekirdekli bir bilgisayar önerilir.

Eğitim İçeriği

Programın gün gün akışı aşağıdadır. Bir güne tıklayarak o günün modüllerini ve içeriklerini görebilirsiniz.

Günün hedefiKatılımcı yarış durumunu üretir, wait/notify ile bounded buffer üretici-tüketici yazar.
Modül 1
Yarış Durumu ve Paylaşılan Durum
  • Paylaşılan değişkende count++ işleminin atomik olmaması
  • Check-then-act ve read-modify-write yarış desenleri
  • İki thread ile kayıp güncelleme deneyinin yazılması
  • Thread-safe olmayan HashMap ve ArrayList sorunları
  • Bellek görünürlüğü ve JMM'de happens-before ilişkisi
  • Yarış durumunu jcstress ve stres testiyle yakalama
Modül 2
wait, notify ve Monitör
  • Her nesnenin monitörü ve synchronized bloğu
  • wait() ile notify()/notifyAll() akışı
  • Spurious wakeup ve while döngüsünde koşul kontrolü
  • IllegalMonitorStateException nedenleri
  • notify ile notifyAll arasındaki tercih
  • Kaybolan sinyal (lost wakeup) örneği
Modül 3
Üretici-Tüketici Uygulaması
  • Sınırlı tampon (bounded buffer) tasarımı
  • wait/notify ile elle yazılmış üretici-tüketici
  • Dolu ve boş tampon koşullarının yönetimi
  • Çoklu üretici ve çoklu tüketici senaryosu
  • Poison pill ile düzgün kapanış
  • Verim ölçümü ve CPU kullanımı karşılaştırması
Modül 4
Eşzamanlılık Hatalarını Teşhis
  • jstack ve jcmd Thread.print ile thread dökümü
  • Deadlock tespiti ve ThreadMXBean
  • VisualVM ile thread durumlarını izleme
  • Loglamada thread adı ve MDC kullanımı
  • Heisenbug: gözlemin hatayı gizlemesi
  • Zaman aşımı ve watchdog stratejileri
Günün hedefiKatılımcı üretici-tüketiciyi BlockingQueue, Condition ve Semaphore ile yeniden çözer ve karşılaştırır.
Modül 1
BlockingQueue ile Üretici-Tüketici
  • ArrayBlockingQueue, LinkedBlockingQueue ve SynchronousQueue
  • put/take ile bloklayan, offer/poll ile zaman aşımlı kullanım
  • PriorityBlockingQueue ve DelayQueue örnekleri
  • Kuyruk kapasitesi ile backpressure uygulama
  • ExecutorService ile tüketici havuzu
  • Elle yazılan sürümle sadelik karşılaştırması
Modül 2
Lock Condition ile Koordinasyon
  • ReentrantLock ve newCondition()
  • await/signal ile ayrı notFull ve notEmpty koşulları
  • awaitNanos ile zaman aşımlı bekleme
  • Condition ile wait/notify farkı
  • Adil (fair) kilit ve açlık problemi
  • Üretici-tüketicinin Condition ile yeniden yazımı
Modül 3
Semaphore ve Kaynak Sınırlama
  • Semaphore izin sayımı ve acquire/release
  • Bağlantı havuzu sınırlama örneği
  • Binary semaphore ile mutex farkı
  • tryAcquire ile engellemesiz deneme
  • Semaphore kaçağı ve finally ile release
  • Rate limiting için basit uygulama
Modül 4
Performans ve Kapanış Stratejileri
  • Kuyruk kapasitesinin verime etkisini ölçme
  • Çoklu tüketicide iş dağılımı ve adillik
  • Interrupt ile iptal ve InterruptedException yönetimi
  • shutdown, shutdownNow ve awaitTermination
  • Üretici hızı tüketiciyi aşınca bellek taşması önleme
  • JMH ile mikro benchmark giriş

Eğitim Kazanımları

Program sonunda katılımcılar:

✅
Yarış Durumu

Kayıp güncelleme ve görünürlük hatalarını üretip açıklayabilirsiniz.

🧩
wait/notify

Monitör tabanlı bekleme ve uyandırmayı while koşuluyla doğru yazabilirsiniz.

⚙
Bounded Buffer

Sınırlı tampon tasarlayıp çoklu üretici-tüketiciyle çalıştırabilirsiniz.

️
BlockingQueue

Kuyruk tabanlı çözümle backpressure uygulayabilirsiniz.

🔍
Condition

Ayrı notFull/notEmpty koşullarıyla kilit koordinasyonu kurabilirsiniz.

🛠
Semaphore

Kaynak sayısını semaphore ile sınırlayabilirsiniz.

️
Düzgün Kapanış

Poison pill ve interrupt ile thread'leri temiz kapatabilirsiniz.

🧪
Teşhis

jstack ve VisualVM ile kilitlenmeleri bulabilirsiniz.

Kimler İçin Uygundur?

  • Java
  • çok iş parçacıklı uygulama yazan veya yazacak backend geliştiricileri ve mühendis adayları için uygundur

Sıkça Sorulan Sorular

Bu eğitim kimler için uygundur?
Java ile çok iş parçacıklı uygulama yazan veya yazacak backend geliştiricileri ve mühendis adayları için uygundur.
wait/notify yerine her zaman BlockingQueue mu kullanmalı?
Çoğu durumda evet; ancak mekanizmayı anlamak için eğitimde önce elle yazılır, sonra BlockingQueue ile sadeleştirilir.
Eşzamanlılık hataları nasıl test edilir?
Stres testi, jcstress benzeri araçlar ve thread dökümü analiziyle; eğitimde bu yöntemler uygulanır.
Eğitimde Java sürümü ne olacak?
JDK 17+ kullanılır.
Eğitim sonunda sertifika verilir mi?
Katılım ve değerlendirme sonrasında Digital Vizyon Akademi Katılım ve Başarı Sertifikası verilir.

Sertifikalandırma

Bu eğitim Digital Vizyon Akademi Başarı Sertifikası ile tamamlanır.

Eğitim başında “Ön Test”, bitiminde “Son Test” uygulanarak gelişim ölçümlenir. Değerlendirme formunu dolduran katılımcılar sertifikalarını alır. Sertifikanızın geçerliliğini Sertifika Sorgulama sayfasından doğrulayabilirsiniz.

Örnek Sertifika d Digital Vizyon AKADEMİ KATILIM SERTİFİKASI Bu sertifika [Katılımcı Adı Soyadı] adlı katılımcının aşağıdaki eğitim programını başarıyla tamamladığını belgeler. Multithreading and Concurrency in Java: Concurrency & the Pr Sertifika Kodu DV-2026XX00 Tarih 27.10.2026 Yetkili İmza DV AKADEMİ

Eğitim Bilgileri

Süre2 gün
SeviyeOrta Seviye
FormatOnline / Yüz Yüze / Hibrit
Sertifika✓ Var
Hemen Bilgi Al
İlgili Eğitimler

Bu Eğitimle Birlikte Tercih Edilenler

Java ve JVMJava Developer Professional: Records, Sealed Classes, and Nested Classes Eğitimi
Yazılım Geliştirme Eğitimleri

Java Developer Professional: Records, Sealed Classes, and Nested Classes Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Java Developer Professional: Records, Sealed Classes, and Nested Classes eğitimi: modern Java ile immutable veri ve kapalı tip hiyerarşileri. Uygulamalı 2 gün p

Detayları Gör →
Java ve JVMJava Developer Professional: The Stream API Eğitimi
Yazılım Geliştirme Eğitimleri

Java Developer Professional: The Stream API Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Java Developer Professional: The Stream API eğitimi: stream pipeline tasarımı ve Collectors ustalığı. Uygulamalı 2 gün, DVA Katılım ve Başarı Sertifikası.

Detayları Gör →
Java ve JVMJava Development Certificate Program Eğitimi
Yazılım Geliştirme Eğitimleri

Java Development Certificate Program Eğitimi

4 günTemelOnline / Yüz Yüze / Hibrit

Java Development Certificate Program eğitimi: java dilini baştan sona uygulamalı öğrenme programı. Uygulamalı 4 gün, DVA Katılım ve Başarı Sertifikası.

Detayları Gör →
Java ve JVMJava Development with Eclipse Eğitimi
Yazılım Geliştirme Eğitimleri

Java Development with Eclipse Eğitimi

2 günBaşlangıçOnline / Yüz Yüze / Hibrit

Java Development with Eclipse eğitimi: eclipse IDE ile verimli Java geliştirme akışı. 2 gün uygulamalı program, Digital Vizyon Akademi Katılım ve Başarı Sertifi

Detayları Gör →
Java ve JVMJava EE Teknolojileri ile Uygulama Geliştirme Eğitimi
Yazılım Geliştirme Eğitimleri

Java EE Teknolojileri ile Uygulama Geliştirme Eğitimi

3 günOrtaOnline / Yüz Yüze / Hibrit

Java EE Teknolojileri ile Uygulama Geliştirme eğitimi: kurumsal Java platformunun katmanlı uygulama geliştirmesi. Uygulamalı 3 gün, DVA Katılım ve Başarı Sertif

Detayları Gör →
+90 (501) 369 40 14 WhatsApp [email protected] LinkedIn