首页 > 系统 > Android > 正文

android开发中的一些思考

2019-11-08 00:29:47
字体:
来源:转载
供稿:网友

1.异步线程

问: 我们把耗时任务放在异步线程中执行,避免UI线程卡顿。假设是一核心CPU,开启三个线程。CPU以叶片轮询方式在线程中切换,子线程中睡眠10秒。打印log发现3个线程的优先级一样,获取到执行的机会也一样。UI线程必须16ms完成绘制任务,那么存不存在CPU在切换过程中而造成的卡顿现象? 答:(经过现阶段水平思考,)存在。并行执行任务只是增加了UI线程的执行机会,不至于阻碍UI线程的进行。下面两个示例可以侧面应证。

比如让UI线程直接睡眠10s,那么必定会卡顿或者ANR。这就是开启子线程执行异步任务的意义。这从某种程度也可以说明手机CPU核心数越多越好。开启n多线程,耗尽CPU资源,势必会造成UI线程卡顿,原因就是UI线程获得的执行机会少了,这也就是使用线程池的意义。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表