Additional information about executors
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 betweenshutdown()
andshutdownNow()
is that theshutdown()
method waits for the finalization of all the tasks that are waiting in the executor.submit()
,invokeall()
, orinvokeany()
: 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...