Can anybody refer me to a better explanation? I tried many things but do not understand the logic behind multi threads. I reread the example several times but can't find out how it actually works in details. My first question is: 1) Why does it seem that I created an infinite loop while I do get output? 2) My output for this code is now => //output 3 2 3 1 Go!Go! Why does it jump back from 2 to 3 and then to 1 skipping 2? 3) Why does it not jump out of the loop? it prints Go! twice even though I put a return after the print command "Go!". 4) Do we need to create a second Thread for the run() method? If so why or why not? Very confused about this. 5) I understand that the interrupt() method will automatically return an interrupted message. So why does it ask for this again after I state the Thread.sleep(1000) in the run() method? In short I do not understand this concept at all so where can I find a proper explanation? Your help is very much appreciated.