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