为什么我的android项目提高CPU使用率范围从60%~100%?

时间:2012-02-06 07:26:21

标签: java android multithreading sockets service

你好我正在android中创建一个聊天应用程序 总的来说,我有一个包含很多类和线程的服务。 在我的服务中,我有套接字输入读取类,套接字输出编写器类和总结有6个线程的pinger。

实际上,我对这个问题很新,我可以说我不知道​​是什么让程序占据了很高的CPU进程百分比。它是否会导致太多静态变量?或者可能有太多的运行线程,或者可能有太多局部变量?

我不确切知道发生了什么......?

所以,请与我分享您的经验和知识

更新

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函数,该函数将获取向量队列的顶部元素,然后将其删除。

更新

T.T这篇文章令人尴尬!我忘记把Thread.sleep()放在我的一些线程中! 抱歉你们! :P

1 个答案:

答案 0 :(得分:0)

它通常是由使用CPU的线程引起的,即使它们无法完成有用的工作。例如,当一个线程正在等待某事发生时,它是否以不使用CPU的方式等待?或者它甚至在它可以工作之前就会不必要地醒来?

它也可能由以非常低效的方式工作的线程引起。