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

Thread.isAlive() 是 Java 中用于检测线程是否处于“活动状态”的方法。它可以帮助我们判断一个线程是否已经启动并且尚未终止。
isAlive() 方法说明
该方法的定义如下:public final boolean isAlive()
- true:表示线程已经启动且还未结束(包括正在运行或处于就绪、阻塞等状态)
- false:表示线程尚未启动,或者已经运行完毕(终止)
使用场景和示例
常见于需要等待某个线程完成任务,或监控线程执行状态的场景。示例代码:
class Worker extends Thread {
public void run() {
for (int i = 0; i
<font>输出大致如下:</font>
- 线程启动前: false
- 线程启动后立即检查: true
- 主线程等待子线程结束...
- 子线程执行中: 0
- ...
- 子线程执行中: 4
- 线程结束后: false
与线程状态的关系
isAlive() 返回 true 的条件是线程处于以下任一状态:- Runnable(运行或就绪)
- Blocked(阻塞)
- Waiting 或 Timed Waiting
注意事项
该方法虽然简单实用,但也有一些需要注意的地方:- 不能用于精确判断线程是否“正在运行”,它只表示线程是否“活跃”(已启动未结束)
- 不推荐依赖 isAlive() 做复杂的线程同步控制,应优先考虑 join()、CountDownLatch、Future 等更安全的方式
- 对已终止的线程再次调用 start() 会抛出 IllegalThreadStateException,isAlive() 仍返回 false
基本上就这些。isAlive() 是一个轻量级的状态检测工具,在简单场景下非常有用,但要注意其局限性。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











