This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
t.join() may be read as : "stop the execution at this point until t has finished". In your sample code, the JVM creates a thread (named "main thread") in which your application runs then main()creates and starts 3 other threads. The join() methods simply force the main thread to stop until t1 and t2 has died (at the end of the run() method).