《Java多线程编程核心技术(第2版)》 —1.11.5 用stop()方法暴力停止线程
1.11.5 用stop()方法暴力停止线程
使用stop()方法可以强行停止线程,即暴力停止线程。
新建项目useStopMethodThreadTest,文件MyThread.java代码如下:
package testpackage;
public class MyThread extends Thread {
private int i = 0;
@Override
public void run() {
try {
while (true) {
i++;
System.out.println("i=" + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件Run.java代码如下:
package test.run;
import testpackage.MyThread;
public class Run {
public static void main(String[] args) {
try {
MyThread thread = new MyThread();
thread.start();
Thread.sleep(8000);
thread.stop();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
程序运行结果如图1-50所示。
图1-50 线程被暴力停止,stop运行图标呈灰色
由运行结果可以看出,线程被暴力停止了,这种方式就是1.11节介绍的第二种停止线程的方法—使用stop()方法强行终止线程。
stop()方法呈删除线程状态,是不再被采用的方法,原因是stop()方法容易造成业务处理的不确定性。例如,A线程执行如下业务:
增加数据1
增加数据2
增加数据3
增加数据4
增加数据5
增加数据6
增加数据7
这时在任意时机对A线程调用stop()方法,A线程并不能确定在哪里被停止了,造成数据增加得不完整。
- 点赞
- 收藏
- 关注作者
评论(0)