关于安卓多线程while(true)方法占用CPU高的原因及其解决方法

来源:互联网 发布:百度统计 数据 编辑:程序博客网 时间:2024/05/22 06:05


由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨。于是开始查找原因,发现是线程run()方法里的while(true)导致的,

下图是为解决时开启一条while(true)线程的CPU占用率,很明显,就开了一条,电脑模拟器CPU就占用了43%,开两条直接90%导致电脑卡死所以这个问题很严重。

这是解决后的CPU占用率,从图中可知,开启了25条线程也就占用了不到34%,所以效果很明显!


这是解决方法:

只需在while(true)循环内加上一句Thread.sleep(1)即可解决该问题。也就是延时1ms。不要小看这1ms,要知道CPU是以纳秒级单位运转的!纳秒,时间单位。一秒10亿分之一!

用代码解释如下:

public void run(){

super.run();

      while(true){
               //你的代码
       }

}
改进之后:
public void run(){

super.run();

       while(true){

         try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
          //你的代码
    }

}


感谢您的阅读,这是我写的第一篇博客。谢谢您的支持!以后我会带来更多我自己的从失败中获得的小心得。

1 0