Что происходит с потоком, когда он достигает конца? Это убивает себя? или он плавает в памяти, занимая место? что именно происходит?
new Thread(new Runnable() { public void run() { //do some stuff ... //ok... did some stuff, now what? } }).start();
Он заканчивается, и все его объекты ThreadLocal становятся пригодными для сбора мусора.
Это просто заканчивается как обычный фрагмент программы. и сборщик мусора может перерабатывать память, которую он занял. Если вы хотите, чтобы поток продолжал выполняться, вы должны использовать его с циклом while или около того.