As mentioned in Chapter 2, writing correct concurrent programs can be very difficult. The Android libraries provide some convenient tools to make concurrency both easier and safer.
When discussing concurrent programs, developers get into the habit of talking as though writing code with multiple threads actually causes those threads to execute at the same time—as though threading actually makes the program run faster. Of course, it isn’t quite that simple. Unless there are multiple processors to execute the threads, a program that needs to perform multiple, unrelated, compute-bound tasks will complete those tasks no more quickly if they are implemented as separate threads than it will if they are on the same thread. In fact, on a single processor, the concurrent version may actually run somewhat more slowly because of the overhead due to context switching.
Multithreaded Java applications were around for a long time before most people could afford machines with more than one processor on which to run them. In the Android world, multithreading is an essential tool, even though the majority of devices will probably have only a single CPU for another year or so. So what is the point of concurrency if not to make a program run faster?
If you’ve been programming for any length of time at all, you probably don’t even think about how absolutely essential it is that the statements in your code are executed in a rigid sequential order. The execution of any given statement ...