Java 5 has introduced new framework called Executor Framework
for managing threads.We have already seen before how to create a thread.
If you have noted, we need to create an object of thread class using new Thread(runnableObject)
, so we need to create thread object for each task.Imagine a situation where you have thousands of task to be executed and if you create each thread for thousands of tasks, you may get performance overheads as creation and maintenance of each thread is also an overhead. Executor framework will solve the problem. In executor framework, you can create specified number of threads and reuse them to execute more tasks once it completes its current task.
Executor framework
simplifies the design of creating multithreaded application and manages thread life cycles.The programmer does not have to create or manage threads themselves, that’s the biggest advantage of executor framework.
There are some important classes or interfaces for executor framework.
Executor
This interface is used to submit new task.It has a method called "execute".
1 2 3 4 5 |
public interface Executor { void execute(Runnable command); } |
ExecutorService
It is sub-interface of Executor.This interface provides methods to manage lifecycle of tasks as well for executor.
For example It provides method for shutting down executors.
ScheduledExecutorService
It is sub-interface of executor service which provides methods for scheduling tasks at fixed intervals or with initial delay.
Executors
This class provides factory methods for creating thread pool.
Important factory methods of Executors are:
ThreadPoolExecutor
Java Executor Framework tutorial
- Java ThreadPoolExecutor example
- Java ExecutorService example using Callable and Future
- Java newFixedThreadPool Example
- Java newCachedThreadPool Example
- Java newSingleThreadExecutor example
- Java scheduledthreadpoolexecutor example
- Java FutureTask Example
- Java ExecutorCompletionService example