Just so it's clear to the OP, the reason Les's code prints "Hello t1" and not "Hello t2" is because the T2 Runnable instance is ignored by the T1 thread. The constructor that takes a Runnable instance only has any effect if the run() method is not overridden. If you were to remove the run() method in T1 then that code would print "Hello t2".
If you believe you can tell me what to think, I believe I can tell you where to go. Go read this tiny ad!
Gift giving made easy with the permaculture playing cards