如何检查线程是否已经停止?(How to check a thread has stop or not?)

优质
小牛编辑
132浏览
2023-12-01

问题描述 (Problem Description)

如何检查线程是否已经停止?

解决方案 (Solution)

下面的示例演示了如何通过使用isAlive()方法检查线程是否已停止。

public class Main {
   public static void main(String[] argv)throws Exception { 
      Thread thread = new MyThread();
      thread.start();
      if (thread.isAlive()) {
         System.out.println("Thread has not finished");
      } else {
         System.out.println("Finished");
      }
      long delayMillis = 5000; 
      thread.join(delayMillis);
      if (thread.isAlive()) {
         System.out.println("thread has not finished");
      } else {
         System.out.println("Finished");
      }
      thread.join();
   }
}
class MyThread extends Thread {
   boolean stop = false;
   public void run() {
      while (true) {
         if (stop) {
            return;
         }
      }
   }
}

结果 (Result)

上面的代码示例将产生以下结果。

Thread has not finished
Finished