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
shutdownNow()is that the
shutdown()method waits for the finalization of all the tasks that are waiting in the executor.
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 custom action before or after the task is enqueued is different from adding a custom action before or after it's executed...