In this chapter, we have extended ThreadPoolExecutor and the ScheduledThreadPoolExecutor class, and overridden some of their methods. But you can override more methods if you want a more specific behavior. These are some methods you can override:
- shutdown(): You must explicitly call this method to end the execution of the executor. You can override it to add some code to free additional resources used by your own executor.
- shutdownNow(): The difference between shutdown() and shutdownNow() is that the shutdown() method waits for the finalization of all the tasks that are waiting in the executor.
- submit(), invokeall(), or invokeany(): You call these methods to send concurrent tasks to the executor. You can override them if you need to do some actions before or after a task is inserted in the task queue of the executor. Note that adding a...