I think the unclear part is here....
th.start() causes the thread to start running and eventually complete its execution.
Is it saying that the start() method complets its execution? Or is it saying that the run() method in the new thread completes it execution?
If it is the first, then the thead object is still accessible from the new newly created thread (even though it is not accessible using th). If it is the second, then it is truely not accessible, and hence, eligible for gc.
Henry