I'd prefer this to take a `Callable<T>` to be executed, rather than sub-classing.

Feels similar to the argument for whether to normally extend `Thread` or to pass in a `Runnable`, which is elegantly answered in http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread:

    implements Runnable is the preferred way to do it, IMO. You're not really specialising the thread's behaviour. You're just giving it something to run. That means composition is the philosophically "purer" way to go.

    In practical terms, it means you can implement Runnable and extend from another class as well.