Java 线程 停止

上海猿猿 2011-10-17 04:38:14
背景:
网上搜到的关于Java线程停止的方法:
外部调用线程的interrupt方法,然后在线程的run函数中,

1. While(isInterrupt());
2. 在循环的末尾添加Sleep(),然后产生异常
3.或者2个混合用。


问题:
我的线程中没有While循环,但它是一个耗时操作,当这个操作在完成一半时,如何安全停止线程。

请各位高手帮忙看看有什么好的办法。
...全文
264 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 jiangsulane911 的回复:]
背景:
网上搜到的关于Java线程停止的方法:
外部调用线程的interrupt方法,然后在线程的run函数中,

1. While(isInterrupt());
2. 在循环的末尾添加Sleep(),然后产生异常
3.或者2个混合用。


问题:
我的线程中没有While循环,但它是一个耗时操作,当这个操作在完成一半时,如何安全停止线程。

请各……
[/Quote]

我想询问一件事情 首先为什么会发生完成一半的时候停止线程的事情 如果是因为主线程执行结束之后想结束所有的线程我个人建议你用后台线程(setDeamon设置为true) 另外 强制中断线程的后果你最好弄清楚
上海猿猿 2011-10-18
  • 打赏
  • 举报
回复
感谢
wakeUpDoNottLazy,
stonefeng的回答,由于总分有限。
luochengor的方法没听过,我再看看如何实现。不过还是要感谢你。


疯癫行者 2011-10-17
  • 打赏
  • 举报
回复
你这个耗时操作可以分解为多个步骤吗?如果可以,在每个步骤之间加上判断语句。如果不可以,只有一个操作,要到这个操作(方法)里面看看情况如何,能分则分,不能分就只能根据操作的内容另外想办法了。例如,如果是执行exe文件,那么就对进程对象操作,强制停掉。总之要具体问题具体分析了。
wakeUpDoNottLazy 2011-10-17
  • 打赏
  • 举报
回复
API 中好像没有直接给出接口,Thread.stop() 也不建议使用了,LZ 能否将这个“大任务”分几个阶段来执行,每个阶段之间进行检查线程是否被中断的操作?
把代码贴一下,看看还有没有更好的解决方案。
  • 打赏
  • 举报
回复
中断和停止是两码事
孟祥月 2011-10-17
  • 打赏
  • 举报
回复
interrupt()
中断线程。Java帮助文档中有这个方法 其他的方法都过时了
luochengor 2011-10-17
  • 打赏
  • 举报
回复
试试ExecutorService的shutdownNow()看看
fainfy 2011-10-17
  • 打赏
  • 举报
回复
1.如果时间是固定的,比如需要暂停10分钟,那可以直接Thread.sleep(long)。
2.如果时间不固定那比如可能是10秒也可能是5秒。

while(true){
// wait...
if(flag){
continue;
]

// run...
}
donaldking 2011-10-17
  • 打赏
  • 举报
回复
设置一个标志位,时不时检查一下。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧