Ako funguje metóda Thread.join()?
sobes.tech AI
Odpoveď od AI
Metóda Thread.join() spôsobí, že aktuálne bežiaci vlákno bude čakať na dokončenie vlákna, na ktoré bolo volané join.
Volaním otherThread.join() je aktuálne vlákno (napríklad main) zablokované, kým otherThread nedokončí svoju činnosť (jeho metóda run() sa nevráti).
Je možné špecifikovať časový limit v milisekundách alebo v milisekundách a nanosekundách:
otherThread.join(long millis): čaká maximálnemillismilisekúnd.otherThread.join(long millis, int nanos): čaká maximálnemillismilisekúnd ananosnanosekúnd.
Ak vyprší stanovený časový limit a vlákno ešte nie je ukončené, aktuálne vlákno sa odblokuje a pokračuje v vykonávaní.
Thread.join() môže vyvolať InterruptedException, ak je aktuálne vlákno počas čakania prerušené. V takom prípade sa čakanie ukončí.
Príklad:
// Vytvoríme a spustíme nové vlákno
Thread worker = new Thread(() -> {
try {
// Simulácia práce
Thread.sleep(2000);
System.out.println("Pracovné vlákno ukončené.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// Hlavné vlákno čaká na ukončenie pracovného vlákna
worker.join();
System.out.println("Hlavné vlákno pokračuje po ukončení pracovného.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Dôležité: join() synchronizuje vykonávanie jedného vlákna s ukončením iného. Je to užitočné, keď chcete zabezpečiť, že určitá úloha bude dokončená pred pokračovaním v inom vlákne.