freeOnterminate устанавливается при создании потока. Тогда, как только Execute потока будет выполнен, то поток сам "убъется". Как то так:
Код:
var
t : TMyThread;
begin
t := TMyThread.Create(True);
t.FreeOnTerminate := True;
t.Resume;
end;
// В потоке:
procedure TMyThread.Execute;
var
I : Integer;
begin
For I := 1 to 10 Do
// DoSomething(I)
end;