停止线程已经不推荐使用已经废弃的JDK的 stop()、destroy() 方法。
而推荐线程自己停止下来。
建议可以使用一个标志位进行终止变量,当变量为false,则终止线程运行。
不仅IDEA开发工具会提示你已弃用。
打开源码也能看到源码里已注解弃用该 stop 和 destroy
可能有小伙伴很困惑,为何要把stop弃用呢?
因为 stop 停止线程,但是并未把线程执行完,这会导致没有释放资源。
destroy()呢?
只是抛出了一个NoSuchMethodError,没干什么事情。
而对比下面的代码可以看到输出线程结束后,释放这些线程资源。
public class ThreadDemo implements Runnable{
private boolean sign = true;
@Override
public void run() {
int i = 0;
while (sign){
System.out.println("run..."+i++);
}
}
public void myStop(){
this.sign = false;
}
public static void main(String[] args) {
ThreadDemo t = new ThreadDemo();
new Thread(t).start();
for (int i = 1; i <=10; i++) {
System.out.println("main-"+i);
if (i==5){
t.myStop();
System.out.println("停止线程了");
}
}
}
}
最后:
为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。