isAlive()返回true表示线程已启动且未终止,false表示未启动或已结束;需调用start()才视为启动,常用于监控线程状态。

Thread.isAlive() 是 Java 中用于检测线程是否处于“活动状态”的方法。它可以帮助我们判断一个线程是否已经启动并且尚未终止。
isAlive() 方法说明
该方法的定义如下:public final boolean isAlive()
Wifi优化大师最新版是一款免费的手机应用程序,专为优化 Wi-Fi 体验而设计。它提供以下功能: 增强信号:提高 Wi-Fi 信号强度,防止网络中断。 加速 Wi-Fi:提升上网速度,带来更流畅的体验。 Wi-Fi 安检:检测同时在线设备,防止蹭网。 硬件加速:优化硬件传输性能,提升连接效率。 网速测试:实时监控网络速度,轻松获取网络状态。 Wifi优化大师还支持一键连接、密码记录和上网安全测试,为用户提供全面的 Wi-Fi 管理体验。
- true:表示线程已经启动且还未结束(包括正在运行或处于就绪、阻塞等状态)
- false:表示线程尚未启动,或者已经运行完毕(终止)
使用场景和示例
常见于需要等待某个线程完成任务,或监控线程执行状态的场景。示例代码:
class Worker extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("子线程执行中: " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class ThreadAliveDemo {
public static void main(String[] args) {
Worker worker = new Worker();
System.out.println("线程启动前: " + worker.isAlive()); // false
worker.start();
System.out.println("线程启动后立即检查: " + worker.isAlive()); // true
while (worker.isAlive()) {
System.out.println("主线程等待子线程结束...");
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程结束后: " + worker.isAlive()); // false
}
}
输出大致如下:
- 线程启动前: false
- 线程启动后立即检查: true
- 主线程等待子线程结束...
- 子线程执行中: 0
- ...
- 子线程执行中: 4
- 线程结束后: false
与线程状态的关系
isAlive() 返回 true 的条件是线程处于以下任一状态:- Runnable(运行或就绪)
- Blocked(阻塞)
- Waiting 或 Timed Waiting
注意事项
该方法虽然简单实用,但也有一些需要注意的地方:- 不能用于精确判断线程是否“正在运行”,它只表示线程是否“活跃”(已启动未结束)
- 不推荐依赖 isAlive() 做复杂的线程同步控制,应优先考虑 join()、CountDownLatch、Future 等更安全的方式
- 对已终止的线程再次调用 start() 会抛出 IllegalThreadStateException,isAlive() 仍返回 false









