簡體   English   中英

suspend()和resume()中的線程問題

[英]thread problem in suspend() and resume()

嗨,我正在做秒表。 對於暫停,我使用Thread.suspend()並繼續使用Thread.resume()。 但簡歷不是繼續工作。 碼:

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

while(shouldRun){.......}

不推薦使用Thread.suspend()Thread.resume()是有原因的-由於各種原因,它們不是一個好主意。 最重要的是,線程本身處於最佳位置,知道如何安全地暫停(例如,不持有鎖時)。

我敦促您重新考慮您的設計,以避免使用掛起/繼續。 如果您告訴我們更多有關您要實現的目標的信息,我們可能會為您提供更多幫助。

如果您真的想暫停線程一段時間,請查看java同步,尤其是Object.wait()和Object.notify / notifyAll()

我真的不明白為什么要使用Thread.suspend()並恢復秒表應用程序。

為什么每次用戶按下秒表按鈕並計算時間增量時,您不只是獲得System.currentTimeMillis()?

Google表示應用程序應在100或200毫秒內做出反應: http : //developer.android.com/guide/practices/design/respondness.html

您應該像這樣在線程中使用Thread.Sleep()函數:public void run(){do {Thread.Sleep(200); if(shouldRun){doSomething(); //更新時鍾表} while(contidions); }

注意不要在工作線程中直接進行任何UI更新:使用和Handler將您的UI更新發送到主線程:僅UI更新功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM