在Java中,可以使用Thread類的getState()方法來獲取線程的狀態。Thread類中定義了一個枚舉類Thread.State,表示線程的不同狀態,常見的有:
1. NEW:初始狀態,線程被創建但還沒有調用start()方法。
2. RUNNABLE:運行狀態,線程正在執行中。
3. BLOCKED:阻塞狀態,線程被阻塞等待鎖的釋放。
4. WAITING:等待狀態,線程等待其他線程的通知。
5. TIMED_WAITING:超時等待狀態,線程等待一段時間后自動恢復。
6. TERMINATED:終止狀態,線程執行完畢或被意外終止。
下面是一個示例代碼,演示了如何獲取線程的狀態:
```java
public class ThreadStatusExample {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
try {
Thread.sleep(1000); // 讓線程休眠1秒鐘
} catch (InterruptedException e) {
e.printStackTrace();
}
});
System.out.println("線程狀態:" + thread.getState()); // 輸出NEW
thread.start(); // 啟動線程
System.out.println("線程狀態:" + thread.getState()); // 輸出RUNNABLE
try {
Thread.sleep(500); // 讓主線程休眠0.5秒鐘
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("線程狀態:" + thread.getState()); // 輸出TIMED_WAITING
try {
thread.join(); // 等待線程執行完畢
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("線程狀態:" + thread.getState()); // 輸出TERMINATED
}
}
```
在上面的代碼中,通過調用Thread的getState()方法,可以獲取線程的狀態,并輸出相應的結果。