android开发中的一些思考

来源:互联网 发布:有源码怎么建站 编辑:程序博客网 时间:2024/06/05 19:14

1.异步线程

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

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

0 0
原创粉丝点击