Java newSingleThreadExecutor example

In this tutorial, we will learn about Executor’s newSingleThreadExecutor factory method.
In the last tutorial, I have shared an introduction to ThreadPoolExecutor. If you are not aware of concepts of ThreadPoolExecutor, you should go through that first.

Executor’s newSingleThreadExecutor factory method :

This method returns thread pool executor which executes one task at a time.If you have submitted n task to executors, it will execute it one by one.If this thread gets interrupted then a new thread will be created for executing the tasks.

Syntax:

Java newSingleThreadExecutor example:

Let’s create a very simple example.

Step 1: Create a Runnable task named "LoopTask.java".

Step 2: Create a class named "SingleThreadPoolMain". This will be our main class.

Let’s run above program to check the output:

Starting LoopTask 1
Executing LoopTask 1 with pool-1-thread-1====1
Executing LoopTask 1 with pool-1-thread-1====2
Executing LoopTask 1 with pool-1-thread-1====3
Executing LoopTask 1 with pool-1-thread-1====4
Executing LoopTask 1 with pool-1-thread-1====5
Executing LoopTask 1 with pool-1-thread-1====6
Executing LoopTask 1 with pool-1-thread-1====7
Executing LoopTask 1 with pool-1-thread-1====8
Executing LoopTask 1 with pool-1-thread-1====9
Executing LoopTask 1 with pool-1-thread-1====10
Ending LoopTask 1
Starting LoopTask 2
Executing LoopTask 2 with pool-1-thread-1====1
Executing LoopTask 2 with pool-1-thread-1====2
Executing LoopTask 2 with pool-1-thread-1====3
Executing LoopTask 2 with pool-1-thread-1====4
Executing LoopTask 2 with pool-1-thread-1====5
Executing LoopTask 2 with pool-1-thread-1====6
Executing LoopTask 2 with pool-1-thread-1====7
Executing LoopTask 2 with pool-1-thread-1====8
Executing LoopTask 2 with pool-1-thread-1====9
Executing LoopTask 2 with pool-1-thread-1====10
Ending LoopTask 2
Starting LoopTask 3
Executing LoopTask 3 with pool-1-thread-1====1
Executing LoopTask 3 with pool-1-thread-1====2
Executing LoopTask 3 with pool-1-thread-1====3
Executing LoopTask 3 with pool-1-thread-1====4
Executing LoopTask 3 with pool-1-thread-1====5
Executing LoopTask 3 with pool-1-thread-1====6
Executing LoopTask 3 with pool-1-thread-1====7
Executing LoopTask 3 with pool-1-thread-1====8
Executing LoopTask 3 with pool-1-thread-1====9
Executing LoopTask 3 with pool-1-thread-1====10
Ending LoopTask 3

We have used new newSingleThreadExecutor, so when we have submitted 3 tasks, 1 new thread will be created and will execute 1 task at time. Other 2 tasks will wait in wait queue. As soon as one task will be completed by thread, another task will be picked by this thread and will execute it.

Difference between newSingleThreadExecutor and newFixedThreadPool(1):

If you might notice there is quite similarity between newSingleThreadExecutor and newFixedThreadPool(1).

You can not change thread pool size of executors returned by newSingleThreadExecutor but you can change thread pool size of executors returned by newFixedThreadPool(1) by calling setCorePoolSize() of the class ThreadPoolExecutor.
That’s all about Java newSingleThreadExecutor example.


You may also like:

Error: View 12d15fexqk may not exist

Was this post helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *