I don't think the logic given by you is correct. I inserted these lines in the code after u.start()(ie, line 1 marked in program).
That means if thread t is alive, it should not print "Alive" and
has to print "in run" second time (u.run(), as you said). Is it correct. But it is not happening. It is not printing "Alive" and also it is not printing "in run" second time.
Pl. correct if I am wrong.