suspend()和resume()中的线程问题

时间:2011-05-06 07:32:37

标签: java android

大家好 我做了一个秒表。暂停我使用Thread.suspend()并继续使用Thread.resume()。但简历没有恢复工作。 代码:

pause(){
  shouldRun = false; 
  currentThread.suspend();      
}
resume(){
  shouldRun = true; 
  currentThread.resume();  
}

而(shouldRun){     .......   }

4 个答案:

答案 0 :(得分:5)

为什么Thread.suspend()Thread.resume()被弃用是有原因的 - 出于各种原因,这不是一个好主意。最重要的是,线程本身最适合知道如何安全地暂停(例如,在没有锁定的情况下)。

我建议您重新考虑您的设计,以避免使用暂停/恢复。如果您告诉我们更多关于您要实现的目标,我们可以为您提供更多帮助。

答案 1 :(得分:2)

如果你真的想要暂停一段时间,请看一下java同步,特别是Object.wait()和Object.notify / notifyAll()

答案 2 :(得分:1)

我真的不明白为什么你使用Thread.suspend()和恢复秒表应用程序。

为什么不在每次用户按下秒表按钮并计算时间增量时获得System.currentTimeMillis()?

答案 3 :(得分:0)

Google称应用程序应在100或200毫秒内做出反应:http://developer.android.com/guide/practices/design/responsiveness.html

你应该在你的线程中使用Thread.Sleep()函数: public void run(){   做{     Thread.sleep代码(200);     如果(shouldRun){       做一点事(); //更新你的钟表     }   而(contidions); }

请注意不要直接在工作线程中执行任何UI更新: 使用和Handler将UI更新发送到主线程:只需UI更新功能。