Hogyan működik a Thread.join() módszer?
sobes.tech MI
Válasz az MI-től
A Thread.join() módszer arra kényszeríti a jelenleg futó szálat, hogy várjon arra, hogy a join-t meghívó szál befejeződjön.
A otherThread.join() hívásakor a jelenlegi szál (például a main) blokkolódik, amíg az otherThread be nem fejezi a futását (az run() metódusa visszatér).
Megadhatunk időtartamot milliszekundumban vagy milliszekundumban és nanosekundumban:
otherThread.join(long millis): legfeljebbmillismilliszekundumot vár.otherThread.join(long millis, int nanos): legfeljebbmillismilliszekundumot ésnanosnanosekundumot vár.
Ha a megadott időtartam lejár, és a szál még nem fejeződött be, a jelenlegi szál feloldódik és folytatja a végrehajtást.
A Thread.join() kiválthat InterruptedException-t, ha a jelenlegi szál megszakításra kerül várakozás közben. Ebben az esetben a várakozás megszakad.
Példa:
// Új szál létrehozása és indítása
Thread worker = new Thread(() -> {
try {
// Munka szimulálása
Thread.sleep(2000);
System.out.println("A munkás szál befejeződött.");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
worker.start();
try {
// A fő szál vár a munkás szál befejezésére
worker.join();
System.out.println("A fő szál folytatódik, miután a munkás befejeződött.");
} catch (InterruptedException e) {
e.printStackTrace();
}
Fontos: A join() szinkronizálja egy szál végrehajtását egy másik befejezésével. Ez akkor hasznos, ha biztosítani szeretnéd, hogy egy adott feladat befejeződjön, mielőtt egy másik szálon folytatnád a végrehajtást.