You should create thread object with
th := TURLDownload.Create('jgvjk', 'ngkj', 'jkgfjk');
Another issues:
In your thread body you call VCL window using showmessage('Reached'); without synchronization.
You should not work with VCL staff without some kind of synchronization - use Synchronize or Queue.
reintroduce is not needed for non-virtual constructor
inherited does nothing in Execute