你好我正在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
答案 0 :(得分:0)
它通常是由使用CPU的线程引起的,即使它们无法完成有用的工作。例如,当一个线程正在等待某事发生时,它是否以不使用CPU的方式等待?或者它甚至在它可以工作之前就会不必要地醒来?
它也可能由以非常低效的方式工作的线程引起。