Java ThreadFactory Example

By Arvind Rai, April 18, 2019
java.util.concurrent.ThreadFactory creates a new thread and has been introduced in JDK 5. ThreadFactory is an interface and is implemented by a user class to override it. ThreadFactory has a method as newThread() and it is overridden to fulfill any specific requirement. Java provides defaultThreadFactory method of Executors as one of the ThreadFactory implementation. Here we will create our own ThreadFactory as an example with simple usage.
1. Find the thread factory that will create all thread as daemon.
DaemonThreadFactory.java
package com.concretepage;
import java.util.concurrent.ThreadFactory;
public class DaemonThreadFactory implements ThreadFactory{
	@Override
	public Thread newThread(Runnable r) {
		Thread t = new Thread(r);
		t.setDaemon(true);
		return t;
	}
} 
2. By the below thread factory, all thread will be created with max priority.
MaxPriorityThreadFactory.java
package com.concretepage;
import java.util.concurrent.ThreadFactory;
public class MaxPriorityThreadFactory implements ThreadFactory{
	@Override
	public Thread newThread(Runnable r) {
		Thread t = new Thread(r);
		t.setPriority(Thread.MAX_PRIORITY );
		return t;
	}
}
3. Now find the program that will use max thread factory to create threads.
ThreadFactoryDemo.java
package com.concretepage;
public class ThreadFactoryDemo {
	 public static void main(String[] args) {
		 DaemonThreadFactory daemontf = new DaemonThreadFactory();
		 MaxPriorityThreadFactory mptf = new MaxPriorityThreadFactory();
		 Runnable r = new SimpleTask("High Priority");
		 mptf.newThread(r).start();
		 r = new SimpleTask("Low Priority"); 
		 daemontf.newThread(r).start();
	}
} 
class SimpleTask implements Runnable{
	String s = null;
	public SimpleTask(String s){
		this.s = s;
	}
	@Override
	public void run() {
	  System.out.println(s+" Simple task done.");	
	}
} 
Find the ouput.
High Priority Simple task done.
Low Priority Simple task done. 
POSTED BY
ARVIND RAI
ARVIND RAI







©2024 concretepage.com | Privacy Policy | Contact Us