Java Concurrency - Thread Joins (Waiting thread completion)
The join method is a execution suspension method. It allows one thread to wait for the completion of another.
If t is a Thread object whose thread is currently executing,
Join causes the current thread to pause execution until t's thread terminates.
Overloads of join allow the programmer to specify a waiting period.
However, as with sleep, join is dependent on the OS for timing, so you should not assume that join will wait exactly as long as you specify.