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();
    }
              //你的代码
        }

    }

  • 相关阅读:
    力扣算法:组合总和IV
    力扣算法:组合总和III
    逻辑回归(Logistic Regression)学习笔记
    力扣算法:组合总和II
    力扣算法:组合总和
    寒假作业(五)
    寒假作业(四)
    寒假作业(三)
    寒假作业(二)
    寒假学习(一)
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6695096.html
Copyright © 2011-2022 走看看