search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
6.7k gösterim
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?
Genel Kavramlar kategorisinde 6.2k puan
yeniden etikenlendirildi
Merhaba,

Thread tam olarak nedir?

1 cevap

0 oy

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:

        Thread thread1 = new Thread(runnableThread, "Thread 1");
        Thread thread2 = new Thread(runnableThread, "Thread 2");
        Thread thread3 = new Thread(runnableThread, "Thread 3");
        Thread thread4 = new Thread(runnableThread, "Thread 4");

        thread1.start();
        thread1.join();
        thread2.start();
        thread2.join();
        thread3.start(); 
        thread4.start();

public class RunnableThread implements Runnable {

    public void run() {
        Thread thread = Thread.currentThread();
        System.out.println(thread.getName() + "  başladı");
        try {
            Thread.sleep(1000);
            System.out.println(thread.getName() + "  bitti.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Çıktısı:

Thread 1  başladı
Thread 1  bitti.
Thread 2  başladı
Thread 2  bitti.
Thread 3  başladı
Thread 4  başladı
Thread 4  bitti.
Thread 3  bitti

--------  ya da şu sonucu da alabilirsiniz ----- thread 3 ve 4 e dikkat!!

Thread 1  başladı
Thread 1  bitti.
Thread 2  başladı
Thread 2  bitti.
Thread 4  başladı
Thread 3  başladı
Thread 3  bitti.
Thread 4  bitti.


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.

--------------------------------------------------

2.0k puan

İlgili sorular

0 oy
1 cevap 2K gösterim
2K gösterim
Thread kavramlarında demon thread ne anlama geliyor. Kullanım alanı ne olabilir.
22 Şubat 2016 Genel Kavramlar kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 669 gösterim
669 gösterim
Merhabalar, Konu ile alakalı bilgisi olmayan birisi olarak; thread nedir? normal kod parçaları ile arasındaki fark nedir? Tesekkur ederim
16 Şubat 2016 Genel Kavramlar kategorisinde Mazlum BA 155 puan sordu
0 oy
0 cevap 359 gösterim
359 gösterim 14 Ocak 2021 Genel Kavramlar kategorisinde Hilalcli 215 puan sordu
0 oy
1 cevap 306 gösterim
306 gösterim
Bir proje altında bazı XML dosyaları var. Ancak ne işe yarar bilgisi olan 1-spring-security.xml 2-classpathApplicationContext.xml 3-applicationContext.xml 4-log4j.xml 5-persistence.xml 6-rebel.xml
15 Haziran 2020 Genel Kavramlar kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 256 gösterim
256 gösterim
Apache Spark nedir tam olarak ne gibi bir soruna çözüm sağlıyor? Makelerde denk geldim de bilen varsa .. Apache kafka, apache tomcat vs. bunlarla bir alakası var mı?
30 Mayıs 2020 Genel Kavramlar kategorisinde tolgacelik.art 2.0k puan sordu