1 /* 2 * Written by Doug Lea with assistance from members of JCP JSR-166 3 * Expert Group and released to the public domain, as explained at 4 * http://creativecommons.org/publicdomain/zero/1.0/ 5 */ 6 7 package java.util.concurrent; 8 9 /** 10 * An object that creates new threads on demand. Using thread factories 11 * removes hardwiring of calls to {@link Thread#Thread(Runnable) new Thread}, 12 * enabling applications to use special thread subclasses, priorities, etc. 13 * 14 * <p> 15 * The simplest implementation of this interface is just: 16 * <pre> {@code 17 * class SimpleThreadFactory implements ThreadFactory { 18 * public Thread newThread(Runnable r) { 19 * return new Thread(r); 20 * } 21 * }}</pre> 22 * 23 * The {@link Executors#defaultThreadFactory} method provides a more 24 * useful simple implementation, that sets the created thread context 25 * to known values before returning it. 26 * @since 1.5 27 * @author Doug Lea 28 */ 29 public interface ThreadFactory { 30 31 /** 32 * Constructs a new {@code Thread}. Implementations may also initialize 33 * priority, name, daemon status, {@code ThreadGroup}, etc. 34 * 35 * @param r a runnable to be executed by new thread instance 36 * @return constructed thread, or {@code null} if the request to 37 * create a thread is rejected 38 */ newThread(Runnable r)39 Thread newThread(Runnable r); 40 } 41