线程状态

线程对象在不同时期有不同的状态,该状态信息存在于Thread.State这个枚举类中

 1 public enum State {
 2     /**
 3      * Thread state for a thread which has not yet started.
 4      */
 5     NEW,
 6 
 7     /**
 8      * Thread state for a runnable thread.  A thread in the runnable
 9      * state is executing in the Java virtual machine but it may
10      * be waiting for other resources from the operating system
11      * such as processor.
12      */
13     RUNNABLE,
14 
15     /**
16      * Thread state for a thread blocked waiting for a monitor lock.
17      * A thread in the blocked state is waiting for a monitor lock
18      * to enter a synchronized block/method or
19      * reenter a synchronized block/method after calling
20      * {@link Object#wait() Object.wait}.
21      */
22     BLOCKED,
23 
24     /**
25      * Thread state for a waiting thread.
26      * A thread is in the waiting state due to calling one of the
27      * following methods:
28      * <ul>
29      *   <li>{@link Object#wait() Object.wait} with no timeout</li>
30      *   <li>{@link #join() Thread.join} with no timeout</li>
31      *   <li>{@link LockSupport#park() LockSupport.park}</li>
32      * </ul>
33      *
34      * <p>A thread in the waiting state is waiting for another thread to
35      * perform a particular action.
36      *
37      * For example, a thread that has called <tt>Object.wait()</tt>
38      * on an object is waiting for another thread to call
39      * <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on
40      * that object. A thread that has called <tt>Thread.join()</tt>
41      * is waiting for a specified thread to terminate.
42      */
43     WAITING,
44 
45     /**
46      * Thread state for a waiting thread with a specified waiting time.
47      * A thread is in the timed waiting state due to calling one of
48      * the following methods with a specified positive waiting time:
49      * <ul>
50      *   <li>{@link #sleep Thread.sleep}</li>
51      *   <li>{@link Object#wait(long) Object.wait} with timeout</li>
52      *   <li>{@link #join(long) Thread.join} with timeout</li>
53      *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
54      *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
55      * </ul>
56      */
57     TIMED_WAITING,
58 
59     /**
60      * Thread state for a terminated thread.
61      * The thread has completed execution.
62      */
63     TERMINATED;
64 }

截图自JDK1.8的API

截自《Java多线程编程核心技术》

原文地址:https://www.cnblogs.com/qf123/p/9770981.html