Chapter 4 - Recipe #2: Creating a fixed-size thread executor