您的位置:首页 > 移动开发 > Android开发

android开发中的一些思考

2016-03-19 12:15 260 查看

1.异步线程

问: 我们把耗时任务放在异步线程中执行,避免UI线程卡顿。假设是一核心CPU,开启三个线程。CPU以叶片轮询方式在线程中切换,子线程中睡眠10秒。打印log发现3个线程的优先级一样,获取到执行的机会也一样。UI线程必须16ms完成绘制任务,那么存不存在CPU在切换过程中而造成的卡顿现象?

答:(经过现阶段水平思考,)存在。并行执行任务只是增加了UI线程的执行机会,不至于阻碍UI线程的进行。下面两个示例可以侧面应证。

比如让UI线程直接睡眠10s,那么必定会卡顿或者ANR。这就是开启子线程执行异步任务的意义。这从某种程度也可以说明手机CPU核心数越多越好。

开启n多线程,耗尽CPU资源,势必会造成UI线程卡顿,原因就是UI线程获得的执行机会少了,这也就是使用线程池的意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: