Почему мой проект Android поднять диапазон использования процессора с 60% до 100%? - PullRequest
0 голосов
/ 06 февраля 2012

Здравствуйте, я делаю приложение чата в Android В общем, у меня есть сервис, который содержит много классов и потоков. в моем сервисе у меня был класс чтения входных сокетов, класс записи выходных данных сокетов и pinger, которые в итоге имеют 6 потоков.

На самом деле, я новичок в этой проблеме, и я могу сказать, что понятия не имею, что заставляет программу занимать высокий процент процессорных процессов. это может быть причиной слишком большого количества статических переменных? или может быть слишком много запущенных потоков, или слишком много локальных переменных?

Я не знаю точно, что происходит ...?

Итак, пожалуйста, поделитесь со мной своим опытом и знаниями

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 () в некоторые из моих тем! Извините за беспокойство, ребята! : Р

1 Ответ

0 голосов
/ 06 февраля 2012

Это вызвано, как правило, потоками, которые используют ЦП, даже если они не могут выполнить полезную работу.Например, когда поток ожидает, что что-то произойдет, он ожидает таким образом, что не использует процессор?Или он продолжает бесполезно просыпаться даже до того, как начинает работать?

Это также может быть вызвано потоками, которые работают крайне неэффективно.

...