Sobes.tech
Middle

Ինչպես է աշխատում Thread.join() մեթոդը։

sobes.tech AI

Պատասխան AI-ից

Thread.join() մեթոդը ստիպում է ընթացիկ գործարկվող թելին սպասել մինչև այն ավարտվի, որի վրա join է կանչվել:

Երբ կանչում եք otherThread.join(), ընթացիկ թելին (օրինակ, main) բլոկվում է մինչև otherThread ավարտի իր գործառույթը (նրա run() մեթոդը վերադարձնի):

Կարող եք նշել սպասման ժամանակը միլիսեկունդներում կամ միլիսեկունդներ և նանոսեկունդներ:

  • otherThread.join(long millis): սպասում է առավելագույնը millis միլիսեկունդ:
  • otherThread.join(long millis, int nanos): սպասում է առավելագույնը millis միլիսեկունդ և nanos նանոսեկունդ:

Եթե նշված սպասման ժամանակը լրանում է և թելին դեռ չի ավարտվել, ընթացիկ թելին բացվում է և շարունակում է գործել:

Thread.join() կարող է արտածել InterruptedException, եթե ընթացիկ թելին խզվի սպասման ժամանակ: Այդ դեպքում սպասումը դադարում է:

Օրինակ:

// Ստեղծում և գործարկում նոր թել
Thread worker = new Thread(() -> {
    try {
        // Աշխատանքի իմիտացիա
        Thread.sleep(2000);
        System.out.println("Աշխատող թելն ավարտվեց.");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});

worker.start();

try {
    // Հիմնական թելին սպասում է աշխատող թելին ավարտին հասնելուն
    worker.join();
    System.out.println("Հիմնական թելն շարունակվում է աշխատող թելին ավարտից հետո.");
} catch (InterruptedException e) {
    e.printStackTrace();
}

Մեծ կարևորություն ունի, որ join() սինխրոնիզացնում է մեկ թելին մյուսի ավարտի հետ: Սա օգտակար է, երբ անհրաժեշտ է ապահովել, որ որոշակի առաջադրանք ավարտվի նախքան մյուս թելին շարունակելն է։