Java线程的几种状态

Posted fkqm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程的几种状态相关的知识,希望对你有一定的参考价值。

Java中线程的状态定义在java.lang.Thread类中的一个枚举中。

技术图片
 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     
View Code

NEW : 该状态线程对象被创建,但还未调用start方法。
RUNNABLE : 线程运行在虚拟机上,但是可能正在等待操作系统的资源
BLOCKED:处于该状态的线程正在等待获取一个监视器锁进入同步代码或方法;也可能是在调用了Object.wait后等待一个监视器锁重新进入同步代码或方法。
WAITING:线程处于等待状态;处于该状态的线程可能是因为调用了Object#wait(),Thread#join,LockSupport#park()中的某一个方法;处于该状态的线程正在等待其他线程完成一些特定的操作。
TIMED_WAITING:线程处于`定时`等待状态,这个等待是有具有指定时间的;处于这个状态的线程可能是调用了具有指定时间的Thread.sleep/Object#wait(long)/#join(long)/LockSupport#parkNanos/LockSupport#parkUntil
TERMINATED:执行完毕

以上是关于Java线程的几种状态的主要内容,如果未能解决你的问题,请参考以下文章

Java线程的几种状态

JAVA 线程的几种状态

java高性能编程基础- java中线程的六种状态,线程状态变化的几种类型

多线程的几种状态

Java线程状态分析

Java-JUC:同步锁的几种方式