Sobes.tech
Middle

Thread.join() yöntemi nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Thread.join() yöntemi, şu anda çalışan akışın, join çağrıldığı akışın tamamlanmasını beklemesine neden olur.

otherThread.join() çağrıldığında, mevcut akış (örneğin, main akışı) engellenir ve otherThread tamamlanana kadar (yani, run() metodu geri döner) bekler.

Zaman aşımı milisaniye veya milisaniye ve nanosaniye cinsinden belirtilebilir:

  • otherThread.join(long millis): en fazla millis milisaniye bekler.
  • otherThread.join(long millis, int nanos): en fazla millis milisaniye ve nanos nanosaniye bekler.

Belirtilen zaman aşımı geçerse ve akış henüz tamamlanmamışsa, mevcut akış serbest bırakılır ve çalışmaya devam eder.

Thread.join() çağrısı, eğer mevcut akış beklerken kesilirse, InterruptedException fırlatabilir. Bu durumda, bekleme sona erer.

Örnek:

// Yeni bir akış oluşturup başlatıyoruz
Thread worker = new Thread(() -> {
    try {
        // Çalışmayı taklit et
        Thread.sleep(2000);
        System.out.println("İşçi akışı tamamlandı.");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});

worker.start();

try {
    // Ana akış, worker akışının tamamlanmasını bekler
    worker.join();
    System.out.println("Ana akış, worker tamamlandıktan sonra devam eder.");
} catch (InterruptedException e) {
    e.printStackTrace();
}

Önemli: join(), bir akışın diğerinin tamamlanmasıyla senkronize olmasını sağlar. Bu, belirli bir görevin tamamlanmasını garantilemek istediğinizde faydalıdır.