Java线程的生命周期包括以下状态:
- 新建状态(New)
- 就绪状态(Runnable)
- 运行状态(Running)
- 阻塞状态(Blocked)
- 终止状态(Terminated)
获得线程状态的方式:
-
getState()方法:获取当前线程的状态;
-
Thread.State枚举类:提供了表示线程状态的几个枚举类型,可以通过Thread对象的getState()方法获得线程状态,然后再通过Thread.State中的几个常量值获得线程状态。
例如,以下两个示例展示了如何获取线程状态:
示例1:
public class ThreadStateExample implements Runnable {
public static void main(String[] args) throws InterruptedException {
ThreadStateExample instance = new ThreadStateExample();
Thread thread = new Thread(instance);
System.out.println("新建线程的状态为:" + thread.getState());
thread.start();
System.out.println("启动线程的状态为:" + thread.getState());
Thread.sleep(1000);
System.out.println("等待1秒后线程的状态为:" + thread.getState());
}
@Override
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
该示例创建一个ThreadStateExample实例instance,然后通过该实例创建一个线程thread。然后在输出语句中分别获取线程状态,并在主线程中等待1秒,以便获取线程状态。
示例2:
public class ThreadStateExample implements Runnable {
public static void main(String[] args) throws InterruptedException {
ThreadStateExample instance = new ThreadStateExample();
Thread thread = new Thread(instance);
System.out.println("新建线程的状态为:" + thread.getState());
thread.start();
System.out.println("启动线程的状态为:" + thread.getState());
while (thread.getState() != Thread.State.TERMINATED) {
System.out.println("线程的状态为:" + thread.getState());
Thread.sleep(1000);
}
}
@Override
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
该示例与示例1类似,不同之处在于在主线程中使用while循环判断线程是否为终止状态,直到线程终止才跳出循环。
以上就是获取Java线程状态的两种方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java线程的生命周期命名与获取代码实现 - Python技术站