Thread kullanımları ile alakalı biraz döküman okuyorum.
Join metodunun tam olarak ne işe yaradığını anlayamadım. Aslında thread çalışmasını bitirene kadar bekler gibi bir açıklaması var, fakat nasıl ve nerede kullanacağım konusunda bir fikir oluşmadı.
Şu işe yarar ve şu durumda kullanılabilir şeklinde bir örnek var mıdır?
Merhaba,
Thread tam olarak nedir?
Thread de join methodu, bir thread işlemini bitirmeden diğer bir thread çalışması engellenir. Eşzamanlı birden fazla thread in iş yapması önlenmiş olur.
4 tane thread olsun, burada 1.thread çalıştıktan sonra, thread1.join() yaparak 1.thread bitmeden 2.thread e geçmeyecektir. 1. Thread çalışması bitince 2. thread çalışır ve biter. Sonra 3. başlar ama daha 3. thread bitmeden hemen 4. thread de peşine başlar beklemeden. Bu thread güvenliğini sağlıksız olmasına neden olabilir.
Kod örneği:
Çıktısı:
Bu thread çalışmasını günlük hayatımıza indirgeyemek için basit bir örnek vermeye çalışayım.
Çamaşır makinesini düşünün, BAŞLA derseniz makine su alıp, sırası ile deterjan, çamaşır suyu vs. maddeleri alıp yıkar ve en son kurutup işlemi bitirir.
Buradaki örnek aslında her bir süreci birer Thread olarak düşünün ayrı birer işlem. Bu işlemler paralel olarak da yapılabilir , peş peşe biri bitince diğerine geç şeklinde de.
Çamaşır yıkarken, henüz suyu alma komutu gelmiş ve almaya da devem ederken, hemen peşine çalışıp kurutma aşaması hemen bitseydi nasıl olurdu :((
Bunu engellemenin yolu,
Thread 1 –>”Suyu Al” diye bir komut olsun,
Thread 2 –>”Kurutmaya Geç” diğer bir komut olsun.
————————————————–
Thread 1.start(); ile Suyu alacağız.
Thread 1.join(); diyerek su alımına başlayan işlem bitmeden kesinlikle diğer işleme geçilemeyecektir.
Thread 2.start(); ile de kurutmaya başlayacağız.
————————————————–