Ինչպես է աշխատում 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() սինխրոնիզացնում է մեկ թելին մյուսի ավարտի հետ: Սա օգտակար է, երբ անհրաժեշտ է ապահովել, որ որոշակի առաջադրանք ավարտվի նախքան մյուս թելին շարունակելն է։