Utility class that executes the given Runnable task on the given task executor or , if none is given, to a new
thread.
If the thread does not return in the given amount of time, it will be interrupted and a logging message sent.
This class is intended for usage inside the framework, mainly by the extender package for controlling runaway
threads.