什么是线程中止
线程运行、抛出异常、或者人为地结束,都会导致线程进入中止状态。
错误的人为中止线程
调用stop方法,真的就会粗暴马上立即的中止了线程,即使有trycatch,但会连异常都来不及catch,这会导致同步锁的原子性问题,在执行了stop方法后,线程 之后的所有代码都不会在执行了。写代码的时候,会发现stop被划了横线,标明这个方法已经被jdk弃用了
正确的人为中止线程的两种方法
- interuption
能catch异常,所以能把所有代码执行完,不会有原子性问题 - 设置标志位
static private volatile boolean flag = true;
Thread{
while(flag){
}
}
flag = false;