JavaGian java tutorial and java interview question and answer

JavaGian , Free Online Tutorials, JavaGian provides tutorials and interview questions of all technology like java tutorial, android, java frameworks, javascript, ajax, core java, sql, python, php, c language etc. for beginners and professionals.

Java newSingleThreadExecutor example

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.

.