这篇文章主要介绍“JAVA线程一共有几种状态”,在日常操作中,相信很多人在JAVA线程一共有几种状态问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JAVA线程一共有几种状态”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
线程的状态,在你*度的过程中,你会发现,答案有5种,6种,甚至还有7种的,那么究竟有几种状态?
在编译器JDK1.5以后的环境下,打开Thread进入源码看看:
* A thread state. A thread can be in one of the following states: * 一个线程,有以下几种状态 * <ul> * <li>{@link #NEW}<br> * ①未启动的线程状态 new * A thread that has not yet started is in this state. * </li> * <li>{@link #RUNNABLE}<br> * ②在jvm中执行的线程状态 runnable * A thread executing in the Java virtual machine is in this state. * </li> * <li>{@link #BLOCKED}<br> * ③一个线程被阻塞,等待监控锁的线程状态 blocked * A thread that is blocked waiting for a monitor lock * is in this state. * </li> * <li>{@link #WAITING}<br> * ④一个线程 为了永久等待另一个线程特定的操作的线程状态 waiting * 翻译后通顺点:无限等待另一个线程的线程执行特定的操作处于此状态 * A thread that is waiting indefinitely for another thread to * perform a particular action is in this state. * </li> * <li>{@link #TIMED_WAITING}<br> * ⑤ 一个线程 等待另一个线程执行特定的操作的等待时间内的线程状态 timed_waiting * 正在等待另一个线程执行某个操作的线程在指定的等待时间内处于这种状态 * A thread that is waiting for another thread to perform an action * for up to a specified waiting time is in this state. * </li> * <li>{@link #TERMINATED}<br> * ⑥一个线程已经被退出的状态 终止 terminated * A thread that has exited is in this state. * </li> * </ul> * * <p> * 在给定的时间点上,线程只能处于一种状态。这些状态是虚拟机状态,不反映任何操作系统线程状态 * A thread can be in only one state at a given point in time. * These states are virtual machine states which do not reflect * any operating system thread states. * * @since 1.5 * @see #getState */```
插入源码
public enum State { /** * Thread state for a thread which has not yet started. */ NEW,
/** * Thread state for a runnable thread. A thread in the runnable * state is executing in the Java virtual machine but it may * be waiting for other resources from the operating system * such as processor. */ RUNNABLE,
/** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked state is waiting for a monitor lock * to enter a synchronized block/method or * reenter a synchronized block/method after calling * {@link Object#wait() Object.wait}. */ BLOCKED,
/** * Thread state for a waiting thread. * A thread is in the waiting state due to calling one of the * following methods: * <ul> * <li>{@link Object#wait() Object.wait} with no timeout</li> * <li>{@link #join() Thread.join} with no timeout</li> * <li>{@link LockSupport#park() LockSupport.park}</li> * </ul> * * <p>A thread in the waiting state is waiting for another thread to * perform a particular action. * * For example, a thread that has called <tt>Object.wait()</tt> * on an object is waiting for another thread to call * <tt>Object.notify()</tt> or <tt>Object.notifyAll()</tt> on * that object. A thread that has called <tt>Thread.join()</tt> * is waiting for a specified thread to terminate. */ WAITING,
/** * Thread state for a waiting thread with a specified waiting time. * A thread is in the timed waiting state due to calling one of * the following methods with a specified positive waiting time: * <ul> * <li>{@link #sleep Thread.sleep}</li> * <li>{@link Object#wait(long) Object.wait} with timeout</li> * <li>{@link #join(long) Thread.join} with timeout</li> * <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li> * <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li> * </ul> */ TIMED_WAITING,
/** * Thread state for a terminated thread. * The thread has completed execution. */ TERMINATED; }```

到此,关于“JAVA线程一共有几种状态”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!