Thread.stop()的后果

时间:2013-09-11 16:37:05

标签: java android multithreading thread-safety android-activity

我知道不推荐使用Thread.stop()并且我已经知道停止线程的替代方法了。但Thread.stop()的直接后果是什么以及Thread.stop()如此“危险”的原因是什么?。

如果我在活动结束时调用Thread.stop()(onDestroy)会导致任何问题(我想阻止Thread立即访问我活动中的对象)?

thx&问候

2 个答案:

答案 0 :(得分:1)

文档指出Thread.stop()抛出一个ThreadDeath异常,并且任何finally块,以及截获/捕获ThreadDeath的任何代码仍然会运行。如果您的目标是阻止线程访问对象,那么这不是解决方案。

答案 1 :(得分:1)

Thread.stop()很危险,因为它会释放所有锁定的对象。这意味着,如果对象是,例如,更新一个数组并且它已经锁定它以便其他线程在使用该数组之前等待该线程完成,并且您调用Thread.stop(),那么该数组将仅部分更新。这可能会导致代码的其他部分出现难以调试的错误。