Sobes.tech
Middle

Hoe werkt de methode Thread.join()?

sobes.tech AI

Antwoord van AI

De methode Thread.join() zorgt ervoor dat de momenteel uitgevoerde thread wacht tot de thread waarop join is aangeroepen, voltooid is.

Door otherThread.join() aan te roepen, wordt de huidige thread (bijvoorbeeld de main-thread) geblokkeerd totdat otherThread zijn uitvoering voltooit (zijn run()-methode keert terug).

Het is mogelijk om een timeout op te geven in milliseconden of in milliseconden en nanoseconden:

  • otherThread.join(long millis): wacht maximaal millis milliseconden.
  • otherThread.join(long millis, int nanos): wacht maximaal millis milliseconden en nanos nanoseconden.

Als de opgegeven timeout verloopt en de thread nog niet is voltooid, wordt de huidige thread ontgrendeld en gaat verder met uitvoeren.

Thread.join() kan een InterruptedException werpen als de huidige thread wordt onderbroken tijdens het wachten. In dat geval wordt het wachten beëindigd.

Voorbeeld:

// Maak een nieuwe thread aan en start deze
Thread worker = new Thread(() -> {
    try {
        // Simulatie van werk
        Thread.sleep(2000);
        System.out.println("Worker thread voltooid.");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});

worker.start();

try {
    // De hoofdthread wacht tot de worker thread klaar is
    worker.join();
    System.out.println("Hoofdthread gaat verder nadat de worker klaar is.");
} catch (InterruptedException e) {
    e.printStackTrace();
}

Belangrijk: join() synchroniseert de uitvoering van één thread met de voltooiing van een andere. Dit is handig wanneer je wilt garanderen dat een bepaalde taak is voltooid voordat je verdergaat in een andere thread.