弃用Thread的stop(),destroy(),resume()方法的原因

时间:2011-09-30 13:51:50

标签: java android

我读到Thread类stop(),destroy(),resume()方法已被删除。这是一个原因:

"因为以这种方式停止线程是不安全的,并且可能使您的应用程序和VM处于不可预测的状态"

老实说,我从文本中并没有完全理解其中的原因。有人可以更清楚地解释一下(特别是" VM无法预测"以及"不安全"单词)

由于

3 个答案:

答案 0 :(得分:4)

因为它解锁了所有监视器线程已锁定,因此其他线程可能会访问状态不一致的对象。

更多信息:

http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html

答案 1 :(得分:0)

本文http://developer.android.com/resources/articles/painless-threading.html解释了Android中使用的线程模型。从该页面引用

  

Android UI工具包不是线程安全的

这意味着如果你正在进行大量的线程操作,你可能会遇到一些非常奇怪的,看似随机的错误。

相反,你应该使用AsyncTasks来完成对UI线程花费太长时间的事情。这包括保存到SD卡,访问数据库或发送网络请求等内容。有关AsyncTasks的更多信息,请参阅我上面链接的文章以及http://developer.android.com/reference/android/os/AsyncTask.html

答案 2 :(得分:0)

stop()resume()已在Java中弃用了十年左右。自Java 1.5以来,{J}已弃用destroy()。 Dalvik只是反映了Java的功能。