线程状态观测

线程状态观测

image

  • NEW
    线程尚未开始。

  • RUNNABLE
    处于这种状态中的java虚拟机执行的线程。

  • BLOCKED
    线程阻塞等待监控锁。

  • WAITING
    处于这种状态的线程被无限期地等待另一个线程来执行特定的动作。

  • TIMED_WAITING
    处于这种状态的线程正在等待另一个线程上执行一个动作指定的等待时间。

  • TERMINATED
    处于这种状态的线程退出。

  • 一个线程可以在一个给定的时间点上只有一个状态。这些状态是不反映任何操作系统线程状态的虚拟机状态。

public static void main(String[] args) {
    Thread thread=new Thread(()->{
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
        System.out.println("子线程");
    });
    //创建完对象后,观察线程的状态
    Thread.State state = thread.getState();
    System.out.println(state);
    //start后线程进入就绪状态
    thread.start();
    System.out.println(thread.getState());
    while (state!=Thread.State.TERMINATED){
        //若线程不死 就一直输出
        //等待状态说明执行中,出现了阻塞睡眠
        try {
            Thread.sleep(100);
            state=thread.getState();
            System.out.println(state);
        } catch (InterruptedException e) {
        }
    }
    //线程停止之后不能再次运行,会出现异常
    //Exception in thread "main" java.lang.IllegalThreadStateException
    //at java.lang.Thread.start(Thread.java:708)
    //at com.zz.state.TestThreadState.main(TestThreadState.java:40)
    //thread.start();
}
posted @ 2021-04-25 14:31  saxon宋  阅读(48)  评论(0)    收藏  举报