In this chapter, we will cover the following topics:
- Customizing the ThreadPoolExecutor class
 - Implementing a priority-based Executor class
 - Implementing the ThreadFactory interface to generate custom threads
 - Using our ThreadFactory in an Executor object
 - Customizing tasks running in a scheduled thread pool
 - Implementing the ThreadFactory interface to generate custom threads for the fork/join framework
 - Customizing tasks running in the fork/join framework
 - Implementing a custom Lock class
 - Implementing a transfer queue-based on priorities
 - Implementing your own atomic object
 - Implementing your own stream generator
 - Implementing your own asynchronous stream