你好我在android 這樣一個聊天應用程序,總的來說,我有一個包含很多類和線程的服務。 在我的服務中,我有套接字輸入讀取類,套接字輸出寫入器類和pinger,總結有6個線程。爲什麼我的android項目將CPU使用率從60%提高到100%?
其實,我對這個問題很新,我可以說我不知道是什麼讓一個程序佔據CPU進程的高比例。是否會導致太多的靜態變量?或者運行的線程太多,或者太多的局部變量可能?
我不知道到底發生了什麼......?
所以,請與我分享你的經驗和知識
UPDATE
public void run() {
while(isRunning) {
try {
Thread.sleep(500);
if(!startCheck) {
//Log.v(TAG, "SocketQueue: "+socketTaskQueue.size()
if(socketTaskQueue.size() > 0) {
processSocketTask();// TODO
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
所以基本上,我做了我喜歡的線程上面的例子。 所以,我有一個名爲socketTaskQueue的向量,並且此線程作業的目的是檢查是否存在套接字任務。如果是這樣,那麼它將執行processSocketTask函數,該函數將獲得向量隊列的頂層元素,然後將其刪除。
UPDATE
T.T這個職位是尷尬!我忘記把Thread.sleep()放在我的一些線程中! 抱歉讓您擁有! :p
**它可能是任何真的......誰知道你的程序中有什麼,*當然我不知道!***有一件事是肯定的,太多的靜態或局部變量不會導致你的CPU用法上升。唯一會導致CPU使用率上升的是代碼執行(來自單個或多個線程)。 – Kiril 2012-02-06 07:30:35
嗨,我已經插入了我的代碼...基本上,我運行了所有這樣的6個蘇打。這種線程是否會讓CPU耗盡?請給我更多的線索...... – user724861 2012-02-06 07:59:43
每最後一次更新:'Thread.Sleep()'可能是實現你想要的最不優雅的方法之一。它幾乎總是一個糟糕的代碼氣味,你應該避免使用它。對於你的例子,你應該使用某種計劃任務/計時器。 – Kiril 2012-02-06 14:44:53