sleep is a static method of Thread class and causes the suspension of the thread for specified period of time.
join() is a non static method of Thread class and
waits at most specified millis milliseconds for this thread to die. A timeout of 0 means to wait forever.
join implementation uses a loop of wait calls conditioned on isAlive method of Thread class. As a thread terminates the
notifyAll method is invoked. It is recommended that applications not use wait,notify, or notifyAll on Thread instances.