网络请求和磁盘读写的线程设计

来源:7-4 Android线程优化实战

慕雪4289266

2019-05-21

老师,看了您了线程优化章节,感觉受益匪浅。最近看了glide的源码,有个地方感觉很疑惑,希望老师可以帮我解惑。glide中,线程池设计也区分了io密集型和cpu密集型。它的网络请求线程池采用的是无上限的线程池,而磁盘读写采用的线程池核心线程和最大线程都只有1,按我的理解,网络请求和磁盘读写都是io操作,为何它们之间的线程数设计会差别这么大呢?网络请求和磁盘读写的io有什么区别吗?

写回答

1回答

随风绽放

2019-05-23

同学你好,二者都是IO的过程,本质上没有区别。关于设计上的区别,我仔细看了下4.10.0,网络的线程池默认并不是无上限的,有一个calculateBestThreadCount的过程,newDiskCacheExecutor我看里面是默认是1,但是提供了重载方法可以传入的。既然可以传入那它默认值是多少其实也没有意义了,毕竟可以根据自己的需要定制。

1
0

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1696 学习 · 532 问题

查看课程