FreePascalでマルチスレッド

Javaでマルチスレッドの後なのでFreePascalでマルチスレッドを書いてみようかなーと。
環境:WindowsXP SP3 / FreePascal 2.4.0

{ ThreadEx.pas }
unit ThreadEx;

{$MODE OBJFPC}

interface

uses
  Windows, Classes;

type
  PThreadEx = ^TThreadEx;
  TThreadEx = class(TThread)
    private
      FWait: Integer;
      FName: String;
    protected
      procedure Execute; override;
    public
      constructor Create(Wait: Integer; const Name: String);
  end;

implementation

constructor TThreadEx.Create(Wait: Integer; const Name: String);
begin
  inherited Create(false);
  FWait := Wait;
  FName := Name;
end;

procedure TThreadEx.Execute;
var
  i: Integer;
begin
  for i := 0 to 10 do
  begin
    Sleep(FWait);
    Writeln(FName, ': ', i);
  end;
end;

end.
{ Threads.fpr }
program Threads;

{$MODE OBJFPC}
{$APPTYPE CONSOLE}

uses
  ThreadEx;

var
  t1, t2: TThreadEx;
begin
  t1 := TThreadEx.Create(2000, 't1');
  t2 := TThreadEx.Create(1000, 't2');
  try
    t1.WaitFor;
    t2.WaitFor;
    Writeln('end');
    Readln;
  finally
    t1.Free;
    t2.Free;
  end;
end.

こんな感じかなあ、やっぱり得意な言語で書くと楽しい。
ちなみにObjectPascalは5年近く触ってるけど、TThreadを扱うのはこれが初めてだったりする…… あってるのかなあ。