📅  最后修改于: 2023-12-03 15:16:01.455000             🧑  作者: Mango
在Java中,我们可以通过检查线程状态来确定线程是否正在运行。线程状态可以通过 Thread
类的同名 State
枚举类型来表示。以下是可能的线程状态:
NEW
:刚刚创建的线程尚未启动。RUNNABLE
:正在运行或准备运行。BLOCKED
:被阻塞等待监视器锁定。WAITING
:等待另一个线程执行特定操作。TIMED_WAITING
:等待另一个线程执行特定操作,但只等待一段时间。TERMINATED
:已经完成执行。为了检查线程是否正在运行,我们可以使用 Thread
类的 getState()
方法。此方法返回具有当前状态的 Thread.State
枚举对象。
下面是一个示例程序,演示如何检测线程是否正在运行:
public class ThreadExample implements Runnable {
public void run() {
System.out.println("线程正在运行...");
}
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new ThreadExample());
// 启动线程
thread.start();
// 等待线程完成
while(thread.getState() != Thread.State.TERMINATED) {
Thread.sleep(100);
}
System.out.println("线程已经完成运行。");
}
}
在上面的示例中,我们创建了一个实现 Runnable
接口的类并用它创建了一个新的线程。我们使用 thread.start()
方法启动线程,并使用一个 while
循环检查线程状态。
在 while
循环中,我们使用 Thread.sleep()
方法等待 100毫秒。这将允许线程执行,并允许我们检查其状态。如果线程的状态不是 TERMINATED
,则线程仍在运行。如果线程的状态是 TERMINATED
,则线程已经完成。
以上程序的输出应如下所示:
线程正在运行...
线程已经完成运行。
这表明线程已经成功完成并退出。
希望本文能够帮助你理解如何检查线程状态以及如何确定线程是否正在运行。