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 maximaalmillismilliseconden.otherThread.join(long millis, int nanos): wacht maximaalmillismilliseconden ennanosnanoseconden.
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.