2024-08-04
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1453120677

回答

在 Java 中我们可以通过 Thread 类的 isAlive() 来判断线程是否存活。

扩展

isAlive() 返回一个 Boolean,true表示线程还在执行,false表示线程已经终止。

  @Test
  public void isAliveTest() {
    Thread thread = new Thread(() -> {
      for (int i = 0; i < 5; i++) {
        log.warn("{} - 正在执行-[{}]...",Thread.currentThread().getName(),i);
        try {
          Thread.sleep(1000L);
        } catch (InterruptedException e) {
          throw new RuntimeException(e);
        }
      }
    });
    thread.start();

    while (thread.isAlive()) {
      log.info("{}-线程是存活的,isAlive:{}...",thread.getName(),thread.isAlive());
      try {
        Thread.sleep(400L);
      } catch (InterruptedException e) {
        throw new RuntimeException(e);
      }
    }
    log.error("{}-线程已终止,isAlive:{}...",thread.getName(),thread.isAlive());
  }

运行结果:

isAlive() 是一个本地 native 方法:

public final native boolean isAlive();