线程在执行的过程中,它的状态属性一共有六种,具体为:新建,可运行,阻塞,等待,终止和
TIMED_WAITING。下面详细的说下每个状态的信息,具体汇总如下:
- 新建,也就是线程刚创建,但是还没有调用start()的方法
- 可运行,也就是runnable,也就是说线程处于可运行的状态,表示操作系统已经给这个线程分配资源
- 阻塞,也就是blocked,表示改线程正在等待一个监控锁,多线程的场景下很容易出现该问题
- 等待是指线程处于等待的状态,指该线程等待另一个线程执行具体的操作
- 终止可以理解为线程执行完毕的状态
- 调校时间的等待可以理解为线程与时间相关的状态,如设置等待时间。
在Java中,获取线程的状态是getState()的方法。下面结合具体的案例来查看各个状态过程中的显示,具
体案例代码如下:
package com.example.blog;
public class ThreadStatus extends Thread
{
@Override
public void run()
{
System.out.println("验证线程的状态信息");
}
public static void main(String[] args)
{
ThreadStatus threadStatus=new ThreadStatus();
System.out.println("线程未start之前的状态信息:"+threadStatus.getState());
threadStatus.start();
System.out.println("线程调用start方法后的信息:"+threadStatus.getState());
try{
Thread.sleep(5);
System.out.println("线程休眠5毫秒的状态信息:"+threadStatus.getState());
Thread.sleep(5000);
System.out.println("线程等待5秒后的状态信息:"+threadStatus.getState());
}catch (Exception e)
{
e.printStackTrace();
}
}
}
代码执行后的结果信息具体如下所示:
线程未start之前的状态信息:NEW
线程调用start方法后的信息:RUNNABLE
验证线程的状态信息
线程休眠5毫秒的状态信息:TERMINATED
线程等待5秒后的状态信息:TERMINATED
通过如上的结果信息可以看到,线程在创建但是未执行的情况下,它的状态是new,在执行后,线程的状态就是
RUNNABLE,也就是运行的状态信息。在运行的过程中,如果针对线程进行了休眠,那么这个时候线程的状态
就是设置等待时间的状态信息。线程的生命周期从NEW的状态开始,一直到TERMINATED的状态结束。
所以在线程执行的过程中,需要针对各个不同的状态进行监控和跟踪,当然这主要是基于业务形态的需要,
比如监控它的执行状态来判断业务执行的过程中是否符合业务的需求。