如何终止java线程
2015-03-30 · 知道合伙人软件行家
关注
展开全部
调用线程的stop方法,即可结束一条线程,但是API上说这个方法已经过时
以下为中文API的原话:
该方法具有固有的不安全性。
用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查
ThreadDeath
异常的一个自然后果)。
如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。
stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。
目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。
如果目标线程等待很长时间(例如基于一个条件变量),则应使用
interrupt 方法来中断该等待。
有关更多信息,请参阅为何不赞成使用
Thread.stop、Thread.suspend 和 Thread.resume?。
API上说,如果你的线程持有某个对象锁,而你却调用了stop,则这个对象锁永远不被释放,可能造成死锁,所以你应该先调用 interrupt() 停止线程,再调用isInterrupted()测试是否终止,
注意,只有你的线程在wait中才有效果的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询