If the only thing variable is the timeout, the I would not subclass the test thread at all. 

First of all you don't want to subclass a method if you are not going to reuse any of its methods apart from its constructor. This is bad OO.

The second thing is that I would not create a subclass. So either give 0 to indicate try without a timeout, and a > 0 to indicate semaphore.tryAcauire.

Will reduce the amount of code for your test