线程状态观测

发布时间 2023-08-25 09:49:35作者: Y~~~
线程状态观测
1.五种线程状态
  1. new 尚未启动的线程处于此状态。

  2. Runnable 在Java虚拟机种执行的线程处于此状态。

  3. BLocked 正在等待另一个线程执行特定动作的线程处于此状态。

  4. Time_waiting 正在等待另一个线程动作打到指定等待时间的线程所处的状态

  5. Terminated 已退出线程处于状态。(线程终断或者结束,一旦进入死亡状态,就不能再次启动)

// 观察测试线程状态
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(100);
              } catch (InterruptedException e) {
                   throw new RuntimeException(e);
              }
               System.out.println("///////");
          }
      });

       // 观察状态
       Thread.State state = thread.getState();
       System.out.println(state);

       // 观察启动后
       thread.start();
       state=thread.getState();
       System.out.println(state);
       while (state != Thread.State.TERMINATED){
           //只要线程不终止 ,就一直输出
           Thread.sleep(100);
           state=thread.getState();
           System.out.println(state);
      }
  }

}