The executor framework, introduced in Java 5, provides a mechanism to execute concurrent tasks without creating, starting, and finishing threads. This framework uses a pool of threads that executes the tasks you send to the executor, reusing them for multiple tasks. This mechanism provides the following advantages to programmers:
- It's easier to program concurrent applications because you don't have to worry about creating threads.
- It's easier to control the resources used by the executor and your application. You can create an executor that only uses a predefined number of threads. If you send more threads, the executor stores them in a queue until a thread is available.
- Executors reduce the overhead introduced by thread creation by reusing the threads. Internally, it manages a pool of threads that reuses threads to execute multiple tasks.
The divide and conquer algorithm is a very popular design technique. To solve a problem using this technique, you...