java代码实现判断线程状态,保持线程始终运行
时间: 2024-01-06 19:04:15 浏览: 33
判断线程状态可以使用Thread类中的getState()方法来获取线程状态。如果线程状态为TERMINATED,表示线程已经结束,否则线程仍在运行。
以下是一个示例代码,实现了一个线程,当线程状态为TERMINATED时,自动重新启动线程:
```java
public class MyThread extends Thread {
private volatile boolean running = true;
@Override
public void run() {
while (running) {
// 线程任务代码
System.out.println("Thread is running...");
}
}
public void stopThread() {
running = false;
}
public static void main(String[] args) throws InterruptedException {
MyThread myThread = new MyThread();
myThread.start();
while (true) {
Thread.State state = myThread.getState();
if (state == Thread.State.TERMINATED) {
myThread = new MyThread();
myThread.start();
}
Thread.sleep(1000);
}
}
}
```
在这个示例中,我们定义了一个MyThread类,实现了一个线程任务,并且使用一个volatile类型的变量running来控制线程是否继续运行。在main()方法中,我们启动了一个MyThread线程,并且使用一个while循环不断获取线程状态,如果线程状态为TERMINATED,就重新创建一个新的MyThread线程并启动。
这样可以保证线程始终运行,即使线程因为异常等原因终止,也会自动重新启动线程。