Cum funcționează metoda Thread.join()?
sobes.tech AI
Răspuns de la AI
Metoda Thread.join() face ca thread-ul curent în execuție să aștepte finalizarea thread-ului pe care a fost apelat join.
Apelând otherThread.join(), thread-ul curent (de exemplu, thread-ul main) este blocat până când otherThread își încheie execuția (metoda sa run() returnează controlul).
Se poate specifica un timeout în milisecunde sau în milisecunde și nanosecunde:
otherThread.join(long millis): așteaptă maximummillismilisecunde.otherThread.join(long millis, int nanos): așteaptă maximummillismilisecunde șinanosnanosecunde.
Dacă timpul de așteptare specificat expiră și thread-ul nu s-a încheiat încă, thread-ul curent va fi deblocat și va continua execuția.
Thread.join() poate arunca o InterruptedException dacă thread-ul curent este întrerupt în timpul așteptării. În acest caz, așteptarea se întrerupe.
Exemplu:
// Creăm și pornim un nou thread
Thread worker = new Thread(() -> {
try {
// Simulare de muncă
Thread.sleep(2000);
System.out.println("Thread-ul worker s-a terminat.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// Thread-ul principal așteaptă finalizarea thread-ului worker
worker.join();
System.out.println("Thread-ul principal continuă după ce worker-ul s-a terminat.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Important: join() sincronizează execuția unui thread cu finalizarea altuia. Acest lucru este util atunci când trebuie să garantăm că o anumită sarcină a fost finalizată înainte de a continua execuția în alt thread.