停止Thread


既然可以用start方法启动一个线程对象执行,那么就应该有对应的stop方法来终止(停止)线程对象的执行。

但是在JDK1.1之后,这个stop方法就取消了,因为会造成系统进入不稳定的状态。。。

(这里说的 终止,停止,是指线程停掉之后,永远都不能恢复执行了)


那么我们就自己设计一个方案,让线程对象停止执行:

  1. 一个线程对象的执行体是run方法
  2. run方法里面的程序代码执行完后,那么就意味着这个线程停止了。
  3. 一个线程停止了,就进入了“dead”状态,没有任何方法让该线程对象进入其他状态了,永远不能恢复执行了(不能死而复生)。
  4. 除非重新new一个新的线程对象。
  5. 所以我的方案是,想终止一个线程的执行,设计一个stop方法,提前让这个线程的run方法退出(return)


具体代码如下:




package thread;

public class Hello4 implements Runnable {
String name;
boolean isStop;

public Hello4(String n) {
this.name = n;
}

@Override
public void run() {

int i = 0;
while (!isStop) {
System.out.println(name + " Hello " + i++);
}
}
// 自定义的stop方法
public void stop() {
isStop = true;
}
}





自定义的stop方法,在程序外部调用,调用之后,run方法内部,跳出循环体,即提前执行完毕。





线程状态图更新如下:



java线程研究---(3)停止Thread_跳出循环