如何终止java线程

 我来答
QQMSD8
2015-03-30 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

调用线程的stop方法,即可结束一条线程,但是API上说这个方法已经过时

以下为中文API的原话:

该方法具有固有的不安全性。

用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 

ThreadDeath 

异常的一个自然后果)。

如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。

stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。

目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。

如果目标线程等待很长时间(例如基于一个条件变量),则应使用 

interrupt 方法来中断该等待。

有关更多信息,请参阅为何不赞成使用 

Thread.stop、Thread.suspend 和 Thread.resume?。



API上说,如果你的线程持有某个对象锁,而你却调用了stop,则这个对象锁永远不被释放,可能造成死锁,所以你应该先调用 interrupt() 停止线程,再调用isInterrupted()测试是否终止,

注意,只有你的线程在wait中才有效果的

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式