你如何杀死Java中的线程?


你如何杀死Java中的线程?


  1. 不建议使用Thread.stop()
  2. 可以通过设置标记的方式来结束
  3. 使用Thread.interrupt()来中断线程

每个线程都有一个布尔标志中断状态,你应该使用它。它可以像这样实现:

public void run() {
   try {
      while (!interrupted()) {
         // ...
      }
   } catch (InterruptedException consumed)
      /* Allow thread to exit */
   }
}

public void cancel() { interrupt(); }

一种方法是设置一个类变量并将其用作哨兵。

Class Outer {
    public static volatile flag = true;

    Outer() {
        new Test().start();
    }
    class Test extends Thread {

        public void run() {
            while (Outer.flag) {
                //do stuff here
            }
        }
    }

}

在上面的例子中设置一个外部类变量,即flag = true。将其设置为false以“杀死”该线程。