package com.freeflying.thread.base;
/**
* @ClassName: StopThreadByException
* @Description:通过throw异常的方式停止线程(真正的停止了线程)
* @author freeflying
* @date 2018年6月23日
*/
public class StopThreadByExceptionA {
public static void main(String[] args) {
try {
StopThreadByExceptionAEx stopThreadByExceptionEx=new StopThreadByExceptionAEx();
stopThreadByExceptionEx.start();
Thread.sleep(2000);
stopThreadByExceptionEx.interrupt();
} catch (Exception e) {
System.out.println("main catch!!!");
e.printStackTrace();
}
System.out.println("end!!!");
}
}
class StopThreadByExceptionAEx extends Thread{
@Override
public void run() {
try {
for (int i = 0; i < 500000; i++) {
//declare current thread is stop status
if(this.interrupted()) {
System.out.println("current thread is stop status,i will exit!!");
throw new InterruptedException();
}
System.out.println("i"+(i+1));
}
System.out.println("i am blew at for");
} catch (InterruptedException e) {
System.out.println("go to the catch in the Thread.java class run method");
e.printStackTrace();
}
}
}
结果:
i234563
i234564
end!!!
current thread is stop status,i will exit!!
go to the catch in the Thread.java class run method
java.lang.InterruptedException
at com.freeflying.thread.base.StopThreadByExceptionAEx.run(StopThreadByExceptionA.java:30)
结论:通过抛出异常的方法能够完全的停止线程。