关于安卓多线程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
- 关于安卓多线程while(true)方法占用CPU高的原因及其解决方法
- mysql cpu占用高的原因
- httpd.exe占用cpu高的解决方法
- PHP 防止 while true循环 CPU 使用率过高的方法
- 占用cpu高的调试方法
- VS2010 vcpkgsrv.exe进程CPU占用高的解决方法 -
- VS2010 vcpkgsrv.exe进程CPU占用高的解决方法
- VS2010 vcpkgsrv.exe进程CPU占用高的解决方法
- 排查Java高CPU占用原因
- 关于while(true)的总结
- 关于while(true)的用法
- tomcat cpu暴涨的原因之一及其解决方法
- tomcat cpu暴涨的原因之一及其解决方法
- 关于mysql的cpu占用高的问题
- Mysql CPU占用高的问题解决方法小结
- Mysql CPU占用高的问题解决方法小结
- Mysql CPU占用高的问题解决方法小结
- Mysql CPU占用高的问题解决方法小结
- 布局加载器LayoutInflater讲解
- 访问权限控制总结
- iOS多线程开发——NSOperation/NSOperationQueue浅析
- leetcode:198 House Robber-每日编程第二十二题
- zeros--创建零矩阵
- 关于安卓多线程while(true)方法占用CPU高的原因及其解决方法
- 潍坊长安医院骗患者钱
- POJ 2242|ZOJ 1090 The Circumference of the Circle
- eye--创建单位矩阵
- Masonry 用法小结
- 关于一起互联网如何盈利的随想
- Opencv2.4.9源码分析——HoughLines
- magic--创建魔方矩阵
- ones--创建全1矩阵