Discuss why Java 5 Executors are the preferred mechanism of creating and dispatching work in separate threads, over either directly creating Thread objects or directly using a pool of threads?
Most multi threaded applications involve several threads, Threads need stack and heap space, and, depending on the platform, thread creation can be expensive. In addition, cancellation and shutdown of threads can be difficult, and a well-designed and implemented thread pooling scheme is not simple. The new Executor framework solves all those problems in a way that decouples task submission from the mechanics of how each task will be run, including the details of thread use, scheduling, etc.