如何阻止线程?(How to stop a thread?)

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

问题描述 (Problem Description)

如何停止一段时间的线程?

解决方案 (Solution)

下面的示例演示了如何通过创建用户定义的方法run()来获取线程,并借助Timer类的方法。

import java.util.Timer;
import java.util.TimerTask;
class CanStop extends Thread {
   private volatile boolean stop = false;
   private int counter = 0;
   public void run() {
      while (!stop && counter < 10000) {
         System.out.println(counter++);
      }
      if (stop)
      System.out.println("Detected stop"); 
   }
   public void requestStop() {
      stop = true;
   }
}
public class Stopping {
   public static void main(String[] args) {
      final CanStop stoppable = new CanStop();
      stoppable.start();
      new Timer(true).schedule(new TimerTask() {
         public void run() {
            System.out.println("Requesting stop");
            stoppable.requestStop();
         }
      }, 
      350);
   }
} 

结果 (Result)

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

Detected stop