Sobes.tech
Middle

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): legfeljebb millis milliszekundumot vár.
  • otherThread.join(long millis, int nanos): legfeljebb millis milliszekundumot és nanos nanosekundumot 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.