I have used multithreading in many of applications I wrote . While reading more I came across ThreadPoolExecutors
. I couldn't not differentiate between the two scenario wise .
Still what I understand is I should use multithreading when I have a task I want to divide a task in to multiple small tasks to utilize CPU and do the work faster . And use ThreadPoolExecutor
when I have a set to tasks and each task can be run independent of each other.
Please correct me if I am wrong . Thanks
A ThreadPoolExecutor
is just a high level API that enables you to run tasks in multiple threads while not having to deal with the low level Thread API. So it does not really make sense to differentiate between multithreading and ThreadPoolExecutor.
There are many flavours of ThreadPoolExecutor
s, but most of them allow more than one thread to run in parallel. Typically, you would use an Executor Service and use the Executors
factory.
For example, a ExecutorService executor = Executors.newFixedThreadPool(10);
will run the tasks you submit in 10 threads.
ThreadPoolExecutor
is one way of doing multithreading. It's typically used when you
Java 7 has another built in class called a ForkJoinPool
which is typically used for Map-Reduce type operations. For instance, one can imagine implementing a merge sort using a ForkJoinPool by splitting the array in 1/2 at each fork point, waiting for the results, and merging the results together.
Thread pools (executors) are one form of multithreading, specifically an implementation of the single producer - multiple consumer pattern, in which a thread repeatedly puts work in a queue for a team of worker threads to execute. It is implemented using regular threads and brings several benefits:
Given the above, it is true that pools are suited for tasks that are usually independent of each-other and usually short-lived (long I/O operations will just tie up threads from the pool that won't be able to do other tasks).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With