Difference Betwixt A Thread As Well As An Executor Inwards Java
Even though both Thread together with Executor, both are used to executed roughly code inwards parallel, in that place are roughly key differences betwixt them.The primary divergence betwixt a Thread together with an Executor inwards Java is that afterwards provides a thread puddle inwards Java. Along alongside several concurrency utilities similar CountDownLatch, CyclicBarrier, Semaphore, FutureTask, Callable interface, together with Conditions, JDK v likewise introduced built-in thread pool, which provides gear upwards of working threads to run your code inwards parallel. Since creating, starting, together with running a thread is a time-consuming together with expensive operation, many Java applications do a puddle of thread at start-up together with leverage that for executing the chore inwards parallel until Java introduced the built-in thread pool. This thread-pool is known every bit Executor framework which relieved Java application developers from the responsibleness of creating together with managing threads
The JDK 1.5 Executor framework is a combination of Executor, Executors, together with ExecutorService interface to supply a fully functional, characteristic rich thread puddle inwards Java. By the way that was the key divergence betwixt Thread together with Executor concept inwards Java, let's encounter a twain of to a greater extent than details nigh Thread together with Executor to response this enquiry better.
1) First together with firstly divergence betwixt Thread together with Executor is that java.lang.Thread is a class inwards Java piece java.util.concurrent.Executor is an interface.
2) The Executor concept is genuinely an abstraction over parallel computation. It allows concurrent code to last run inwards managed way. On the other hand, Thread is a concrete way to run the code inwards parallel.
3) The tertiary divergence betwixt an Executor together with a Thread degree is that old decouples a chore (the code which needs to last executed inwards parallel) from execution, piece inwards the illustration of a Thread, both chore together with execution are tightly coupled. You tin farther read Java Concurrency inwards Practice past times Brian Goetz to larn to a greater extent than nigh how decoupling a chore from execution simplify the pattern of concurrent applications inwards Java.
4) The Executor concept allows your chore is to last executed past times a worker thread from the thread pool, piece Thread itself execute your task.
5) Executor provides a execute() method which accepts a Runnable task, piece Thread accepts the Runnable task on its constructor.
6) One to a greater extent than key divergence betwixt a Thread together with an Executor is that a Thread tin alone execute one Runnable task but an Executor tin execute whatsoever set out of Runnable task.
7) In the illustration of Thread, the chore is executed past times the Thread which accepts Runnable instance, but inwards the illustration of Execution the command (a Runnable implementation) may last executed inwards a novel thread, a pooled thread or inwards the calling thread itself, depending upon the implementation of Executor interface.
8) In the illustration of a thread, it's developer's responsibleness to do together with start the thread, but inwards the illustration of Executor, the framework volition do together with start threads for you. Though y'all tin command the whole procedure past times giving your implementation of Executor interface. Though, alongside the improvements inwards ForkJoinPool inwards Java seven together with 8, y'all mightiness desire to utilization that instead of Executor. If ForkJoinPool is a novel concept to you, I advise reading Java 8 inwards Action to larn to a greater extent than nigh it.
7) Now, let's encounter an illustration of execution a Runnable chore via Executor together with via Thread inwards Java:
The divergence is quite clear that commencement is only a thread piece afterwards is a puddle of threads.
It's worth noting that manufacturing flora methods of Executors degree e.g. newSingleThreadExecutor() render an ExecutorService, which is sub-interface of Executor together with likewise provides methods to accepts a Callable, move or near downwards the thread pool.
That's all nigh the difference betwixt a Thread together with an Executor inwards Java. You tin encounter that fifty-fifty though both are related to the parallel execution of chore they are a split upwards abstraction. H5N1 Thread represents something which is responsible for executing your code inwards parallel, piece an Executor is an abstraction for concurrent chore execution. Most importantly, Executor decouples chore to its execution which way an asynchronous execution is possible, but chore together with execution are tightly coupled inwards the illustration of Thread.
Other multi-threading articles y'all may like
Further Learning
Multithreading together with Parallel Computing inwards Java
Java Concurrency inwards Practice - The Book
Applying Concurrency together with Multi-threading to Common Java Patterns
Java Concurrency inwards Practice Course past times Heinz Kabutz
The JDK 1.5 Executor framework is a combination of Executor, Executors, together with ExecutorService interface to supply a fully functional, characteristic rich thread puddle inwards Java. By the way that was the key divergence betwixt Thread together with Executor concept inwards Java, let's encounter a twain of to a greater extent than details nigh Thread together with Executor to response this enquiry better.
Thread vs Executor inwards Java
As I said, a Thread is used to run your code inwards parallel together with y'all tin do together with start your ain thread either past times extending java.lang.Thread degree or implementing java.lang.Runnable interface. Though both approaches piece of occupation good inwards pocket-sized application, they lead keep their pros together with cons, which y'all tin encounter here. On the other hand, Executor is an interface which likewise provides parallel execution, but via a thread pool, which is to a greater extent than suitable for large Java application.1) First together with firstly divergence betwixt Thread together with Executor is that java.lang.Thread is a class inwards Java piece java.util.concurrent.Executor is an interface.
2) The Executor concept is genuinely an abstraction over parallel computation. It allows concurrent code to last run inwards managed way. On the other hand, Thread is a concrete way to run the code inwards parallel.
3) The tertiary divergence betwixt an Executor together with a Thread degree is that old decouples a chore (the code which needs to last executed inwards parallel) from execution, piece inwards the illustration of a Thread, both chore together with execution are tightly coupled. You tin farther read Java Concurrency inwards Practice past times Brian Goetz to larn to a greater extent than nigh how decoupling a chore from execution simplify the pattern of concurrent applications inwards Java.
4) The Executor concept allows your chore is to last executed past times a worker thread from the thread pool, piece Thread itself execute your task.
5) Executor provides a execute() method which accepts a Runnable task, piece Thread accepts the Runnable task on its constructor.
6) One to a greater extent than key divergence betwixt a Thread together with an Executor is that a Thread tin alone execute one Runnable task but an Executor tin execute whatsoever set out of Runnable task.
7) In the illustration of Thread, the chore is executed past times the Thread which accepts Runnable instance, but inwards the illustration of Execution the command (a Runnable implementation) may last executed inwards a novel thread, a pooled thread or inwards the calling thread itself, depending upon the implementation of Executor interface.
8) In the illustration of a thread, it's developer's responsibleness to do together with start the thread, but inwards the illustration of Executor, the framework volition do together with start threads for you. Though y'all tin command the whole procedure past times giving your implementation of Executor interface. Though, alongside the improvements inwards ForkJoinPool inwards Java seven together with 8, y'all mightiness desire to utilization that instead of Executor. If ForkJoinPool is a novel concept to you, I advise reading Java 8 inwards Action to larn to a greater extent than nigh it.
7) Now, let's encounter an illustration of execution a Runnable chore via Executor together with via Thread inwards Java:
import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class Main { public static void main(String args[]) { Runnable chore = new Runnable() { @Override public void run() { System.out.println("Task is executed past times : " + Thread.currentThread().getName()); } }; Thread t = new Thread(task, "MY_THREAD"); t.start(); Executor e = Executors.newSingleThreadExecutor(); e.execute(task); } } Output Task is executed past times MY_THREAD Task is executed past times pool-1-thread-1
The divergence is quite clear that commencement is only a thread piece afterwards is a puddle of threads.
It's worth noting that manufacturing flora methods of Executors degree e.g. newSingleThreadExecutor() render an ExecutorService, which is sub-interface of Executor together with likewise provides methods to accepts a Callable, move or near downwards the thread pool.
That's all nigh the difference betwixt a Thread together with an Executor inwards Java. You tin encounter that fifty-fifty though both are related to the parallel execution of chore they are a split upwards abstraction. H5N1 Thread represents something which is responsible for executing your code inwards parallel, piece an Executor is an abstraction for concurrent chore execution. Most importantly, Executor decouples chore to its execution which way an asynchronous execution is possible, but chore together with execution are tightly coupled inwards the illustration of Thread.
Other multi-threading articles y'all may like
- Top 50 Java Multithreading Interview Questions from final v years (list)
- 10 Multithreading together with Concurrency Best Practices Java developer should follow (article)
- How to utilization Future together with FutureTask inwards Java? (tutorial)
- How to solve Producer Consumer Problem using Lock together with Condition (solution)
- Is "Java Concurrency inwards Practice" Still Valid inwards the era of Java 8? (opinion)
- How to bring together to a greater extent than than 2 Threads inwards Java? (example)
- What is the correct way to halt a Thread inwards Java? (tutorial)
Further Learning
Multithreading together with Parallel Computing inwards Java
Java Concurrency inwards Practice - The Book
Applying Concurrency together with Multi-threading to Common Java Patterns
Java Concurrency inwards Practice Course past times Heinz Kabutz
0 Response to "Difference Betwixt A Thread As Well As An Executor Inwards Java"
Post a Comment