hooyantsing's Blog

15_观测线程状态

字数统计: 293阅读时长: 1 min
2020/08/21

15 观测线程状态

狂神说Java 多线程详解

Thread.State

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

  • NEW

尚未启动的线程处于此状态。

  • RUNNABLE

在Java虚拟机中执行的线程处于此状态。

  • BLOCKED

被阻塞等待监视器的线程处于此状态。

  • WAITING

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

  • TIMED_WAITING

正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。

  • TERMINATED

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

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package demo2;

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); // NEW

// 观察启动后
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);
}
}
}

运行结果:

3440f7902da43c9a1b6c9aa848c6d898.png

d6f5430fcf6760349c1269b3920dd98a.png

CATALOG
  1. 1. 15 观测线程状态
    1. 1.1. Thread.State
      1. 1.1.1. 案例