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
7package 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 */
29public 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     */
39    Thread newThread(Runnable r);
40}
41