La méthode
join
est une méthode non-statique donc il est nécessaire d'avoir une référence sur l'instance d'un thread pour l'appeler.
L'appel de cette méthode cause le thread courant d'arrêter son exécution et de passer à l'état "
En attente d'exécution".
Le thread courant va attendre que le thread (dont l'instance a été referée pour invoquer la méthode
join
)
termine d'abords son exécution avant qu'il peut être sélectionné encore une fois par la JVM pour terminer son exécution.
Résultat d'exécution du code :
Pour cet exemple, il faut considérer les deux points suivants :
- L'instruction
myThread1.join();
est exécutée par le thread d'exécution "main".
- La référence utilisée pour invoquer la méthode
join
est celle du thread d'exécution "myJoinThread".
Comme vous pouvez le voir dans le résultat d'exécution du code,
le thread d'exécution "
main" a continué son exécution après que le thread d'exécution "
myJoinThread" a complété son exécution.
Qu'est ce qu'il se passe si le thread courant essaye de joindre un thread qui a déjà terminé son exécution ?
Pas grand-chose, la JVM reconnait que le thread "
myJoinThread" a déjà terminé son exécution,
et donc le thread "
main" peut être laissé par la JVM continuer son exécution.
Résultat d'exécution du code :