观察线程状态

线程状态:

  • 线程状态。线程可以处于以下状态之一:

    • NEW
      尚未启动的线程处于此状态。
    • RUNNABLE
      在Java虚拟机中执行的线程处于此状态。
    • BLOCKED
      被阻塞等待监视器锁定的线程处于此状态。
    • WAITING
      正在等待另一个线程执行特定动作的线程处于此状态。
    • TIMED_WAITING
      正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
    • TERMINATED
      已退出的线程处于此状态。

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

在这里插入图片描述

  • 案例

    package Thread;
    
    //观察测试线程的状态
    public class TestState {
          
          
    
        public static void main(String[] args) throws InterruptedException {
          
          
            Thread thread=new Thread(()->{
          
          
                for (int i = 0; i < 5; i++) {
          
          
                    try {
          
          
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
          
          
                        e.printStackTrace();
                    }
                }
                System.out.println("");
            });
    
    
            //观察状态
            Thread.State state=thread.getState();
            System.out.println(state);
    
    
            //观察启动后
            thread.start();  //启动线程
            state=thread.getState();
            System.out.println(state); //run
    
            //只要线程不终止,就一直输出状态
            while (state!=Thread.State.TERMINATED){
          
          
                Thread.sleep(100);
                //更新线程状态
                state=thread.getState();
                System.out.println(state);
            }
        }
    }
    
    

猜你喜欢

转载自blog.csdn.net/qq_45162683/article/details/111595427