Simple task executor interface that abstracts the execution
of a Runnable.

Implementations can use all sorts of different execution strategies,
such as: synchronous, asynchronous, using a thread pool, and more.

Equivalent to JDK 1.5's Executor
interface; extending it now in Spring 3.0, so that clients may declare
a dependency on an Executor and receive any TaskExecutor implementation.
This interface remains separate from the standard Executor interface
mainly for backwards compatibility with JDK 1.4 in Spring 2.x.