ExecutorService interface represents an asynchronous
execution mechanism which is capable of executing tasks in the background. An
ExecutorService is thus very similar to a thread pool Task
Delegation.
Once the thread has
delegated the task to the ExecutorService, the
thread continues its own execution independent of the execution of that task.
ThreadPoolExecutor is an implementation of the ExecutorService interface. The ThreadPoolExecutor executes the given task (Callable or Runnable) using one of its internally pooled threads.
The thread pool
contained inside the ThreadPoolExecutor can contain a varying amount of
threads.
The number of threads in the pool is determined by these variables:
corePoolSize, maximumPoolSize
If less than corePoolSize threads are created in the thread pool when a task is delegated to the thread pool, then a new thread is created, even if idle threads exist in the pool.
If the internal queue of tasks is full, and corePoolSize threads or more are running, but less than maximumPoolSize threads are running, then a new thread is created to execute the task.
Here is a diagram illustrating the ThreadPoolExecutor principles:
ScheduledExecutorService is an ExecutorService which can schedule tasks to run after a delay, or to execute repeatedly with a fixed interval of
time in between each execution. Tasks are executed asynchronously
by a worker thread, and not by the thread handing the task to the
ScheduledExecutorService
No comments:
Post a Comment