zoukankan      html  css  js  c++  java
  • 转:关于安卓多线程while(true)方法占用CPU高的原因及其解决方法

     由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,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();
    }
              //你的代码
        }

    }

  • 相关阅读:
    js中不同的height, top的对比
    正则表达式入门以及记录
    CSS小记(持续更新......)
    Git远程操作
    Git Push 避免用户名和密码方法
    Git本地操作
    CSS3动画属性
    c语言文法
    实验一、词法分析器实验
    词法分析器
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6695096.html
Copyright © 2011-2022 走看看