"Bună, Amigo! Văd că faci pași mari în a învăța despre fire."

— La urma urmei, nu a fost atât de greu.

Grozav! Astăzi aveți o lecție ușoară, iar subiectul este metoda join .

Imaginează-ți următoarea situație: firul principal a creat un fir copil pentru a îndeplini o anumită sarcină. Timpul trece, iar acum firul principal are nevoie de rezultatele muncii efectuate de firul copil. Dar firul copil nu și-a terminat încă treaba. Ce ar trebui să facă firul principal?

Buna intrebare. Ce ar trebui să facă firul principal?

„În acest sens este metoda join . Ne permite să facem un fir să aștepte în timp ce un alt fir își termină munca:”

Cod Descriere
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Clasa care implementează interfața Runnable.
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
Firul principal creează un fir copil – thread1 .

Apoi îl pornește apelând thread1 .start();

Și apoi așteaptă să se termine – thread1.join();

Un thread poate apela metoda join pe obiectul Thread al celui de-al doilea thread. Ca rezultat, primul fir de execuție (care a numit metoda) își oprește activitatea până când al doilea fir de execuție (a cărui metodă de unire a obiectului a fost numită) este terminat.

Trebuie să facem distincția între două lucruri aici: avem un thread (un mediu de execuție separat) și avem un obiect Thread.

"Asta este?"

"Da."

„Dar de ce trebuie să creăm un fir și apoi să așteptăm imediat să se finalizeze?”

„S-ar putea să nu fie nevoie imediat. S-ar putea să fie după ce a trecut ceva timp. După pornirea primului său thread copil, firul principal poate atribui mai multe sarcini altor fire (prin crearea lor și apelarea metodei de pornire ). nu mai are de lucru, trebuie să proceseze rezultatele primului fir de execuție copil. Ori de câte ori trebuie să așteptați ca un alt fir să termine de lucru, trebuie să apelați metoda join ."

"Am înţeles."