Chapter 9. Control over Thread Execution Through the Executor Framework

Java’s Executor framework opens up new dimensions of control over threads and the resources they use on the system. Sometimes you want to launch as many threads as the system can handle to resolve tasks quickly; other times you want to let the system manage the number of threads; and sometimes you want to cancel threads because they are no longer needed. The Executor framework, along with related classes, allows you to:

  • Set up pools of worker threads and queues to control the number of tasks that can wait to be executed on these threads
  • Check the errors that caused threads to terminate abnormally
  • Wait for threads to finish and retrieve results from them
  • Execute batches of threads and retrieve their results in a fixed order
  • Launch background threads at convenient times so that results are available to the user faster

Executor

The fundamental component of the Executor framework is the simple Executor interface. Its main goal is to separate the creation of a task (such as a Runnable) from its execution, thus enabling the sorts of application behaviors listed at the beginning of the chapter. The interface includes just one method:

public interface Executor {
    void execute(Runnable command);
}

Despite its simplicity, the Executor is the foundation of a powerful execution environment, and is used more often than the basic Thread interface because it provides a better separation between submitting a task and its actual ...

Get Efficient Android Threading now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.