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/licenses/publicdomain 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> 17 * class SimpleThreadFactory implements ThreadFactory { 18 * public Thread newThread(Runnable r) { 19 * return new Thread(r); 20 * } 21 * } 22 * </pre> 23 * 24 * The {@link Executors#defaultThreadFactory} method provides a more 25 * useful simple implementation, that sets the created thread context 26 * to known values before returning it. 27 * @since 1.5 28 * @author Doug Lea 29 */ 30 public interface ThreadFactory { 31 32 /** 33 * Constructs a new {@code Thread}. Implementations may also initialize 34 * priority, name, daemon status, {@code ThreadGroup}, etc. 35 * 36 * @param r a runnable to be executed by new thread instance 37 * @return constructed thread, or {@code null} if the request to 38 * create a thread is rejected 39 */ newThread(Runnable r)40 Thread newThread(Runnable r); 41 } 42