From the beginning, Java supported concurrency in the form of low-level threads management, locks, synchronization, and APIs for concurrency. We covered them in the preceding chapter in our discussion of the Thread class, Runnable interface, and synchronized keyword.
Since 5.0, Java also supports high-level concurrency APIs in its java.util.concurrent package. In this chapter, we’ll focus on these APIs for concurrent programming. These high-level APIs exploit today’s multi-core hardware, in which a single processor has ...