RT,需要在程序中终止一个线程的运行。
从网上搜索的答案来看,stop()方法已经不推荐了,现在推荐的时使用interrupt方法。
不过这里有一个问题,interrupt方法要求该线程处于中断状态,通常是在一个死循环中调用sleep,并监控exception,才能够生效。
而我的需求是,我的线程是线性执行的,没有中断的状态,正常情况下肯定是可以执行结束的。不过由于线程的功能比较复杂,运行一次通常需要2-3分钟的时间,这时就希望有一种方法能终止这个线程的执行,不知道这种情况下如何达到这个目的。
------解决方案--------------------
1.可以自己设置一个标志位flag,加一个while循环,当让它运行时设置为true,不想让它运行时设置flase;
2. 用interrupt 当出现sleep时会出现异常,进不去停止;
------解决方案--------------------
用标志位,根据标志位去break。
------解决方案--------------------
参考文章。
------解决方案--------------------
private boolean closed=true;
public void setClosed(boolean closed){
this.closed =closed;
}
public void run(){
while(close){
.............
}
}
------解决方案--------------------
你可以自己关联标位,让它自己去中断
------解决方案--------------------
你想要在不侵入线程本身逻辑的情况下让它随时可以结束么?
如果你这样想,很明确的告诉你做不到。
如果你是想要退出主程序,可以考虑把线程变成守护线程,让其不影响你主线程退出。
或者可以考虑把线程升级为进程,这样你可以任意操作它的状态