Basically, the main thread created the threads t1 and t2 and they are started running in parallel. Whereas, t1.join() will wait for the thread t1 to finish, when it finished t1.join() will return the main thread. Similarly, with the t2 thread also.
I hope this will help.
Want to know more about Java? Prefer this tutorial on Java Tutorial.
Want to become a Java Expert? Join Java Certification now!!