Java 线程 停止
背景:
网上搜到的关于Java线程停止的方法:
外部调用线程的interrupt方法,然后在线程的run函数中,
1. While(isInterrupt());
2. 在循环的末尾添加Sleep(),然后产生异常
3.或者2个混合用。
问题:
我的线程中没有While循环,但它是一个耗时操作,当这个操作在完成一半时,如何安全停止线程。
请各位高手帮忙看看有什么好的办法。
[解决办法]
设置一个标志位,时不时检查一下。
[解决办法]
1.如果时间是固定的,比如需要暂停10分钟,那可以直接Thread.sleep(long)。
2.如果时间不固定那比如可能是10秒也可能是5秒。
while(true){ // wait... if(flag){ continue; ] // run...}
[解决办法]
试试ExecutorService的shutdownNow()看看
[解决办法]
API 中好像没有直接给出接口,Thread.stop() 也不建议使用了,LZ 能否将这个“大任务”分几个阶段来执行,每个阶段之间进行检查线程是否被中断的操作?
把代码贴一下,看看还有没有更好的解决方案。
[解决办法]
你这个耗时操作可以分解为多个步骤吗?如果可以,在每个步骤之间加上判断语句。如果不可以,只有一个操作,要到这个操作(方法)里面看看情况如何,能分则分,不能分就只能根据操作的内容另外想办法了。例如,如果是执行exe文件,那么就对进程对象操作,强制停掉。总之要具体问题具体分析了。