Sobes.tech
Middle

Thread.join() metodu necə işləyir?

sobes.tech Süni İntellekt

AI-dan cavab

Thread.join() metodu cari icra olunan axını join çağırılan axının tamamlanmasını gözləməyə məcbur edir.

otherThread.join() çağırıldıqda, cari axın (məsələn, main axını) bloklanır və otherThread öz icrasını tamamlayana qədər (onun run() metodu geri dönənə qədər) gözləyir.

Zaman aşımını millisekund və ya millisekund və nanosekund şəklində göstərə bilərsiniz:

  • otherThread.join(long millis): ən çox millis millisekund gözləyir.
  • otherThread.join(long millis, int nanos): ən çox millis millisekund və nanos nanosekund gözləyir.

Əgər göstərilən zaman aşımı keçərsə və axın hələ tamamlanmayıbsa, cari axın açılır və davam edir.

Thread.join() InterruptedException atə bilər, əgər cari axın gözləmə zamanı kəsilərsə. Bu halda, gözləmə dayandırılır.

Nümunə:

// Yeni axın yaradıb işə salırıq
Thread worker = new Thread(() -> {
    try {
        // İşin simulyasiyası
        Thread.sleep(2000);
        System.out.println("İşçi axını tamamlandı.");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});

worker.start();

try {
    // Əsas axın, işçi axınının tamamlanmasını gözləyir
    worker.join();
    System.out.println("Əsas axın, işçi tamamlandıqdan sonra davam edir.");
} catch (InterruptedException e) {
    e.printStackTrace();
}

Əhəmiyyətli: join() bir axının digərinin tamamlanması ilə sinxronlaşdırır. Bu, müəyyən bir tapşırığın tamamlanmasını təmin etmək üçün faydalıdır.