大文件 and 多下载任务的封装(一)---线程池的封装(ThreadPool,TheadManager)

ThreadManager

原文地址
大文件 and 多下载任务的封装二
大文件 and 多下载任务的封装三·

前段时间对三级缓存机制做了系统的分析,但是对于网络下载的问题还有很多,比如今天遇到的问题,针对一些需要下载大文件,并且需要进行多线程下载的应用来说,(比如,像一些应用商店,软件的下载和一些累似的多线程的下载类型)就需要用到线程池,下载就简单介绍对线程池的封装

一.为什么要使用线程池

根据android单线程模式规定,android只允许有一个主线程,也就是UI线程,一切更新UI的操作必须在UI线程中使用,然而对应的一切的耗时操作,只允许在子线称中执行,所以针对子线称的下载操作,可以使用线程池进行管理,所以封装线程吃对线程池管理工具,也是非常实用的。

  1. 提升性能。创建和消耗对象费时,费CPU资源.
  2. 防止内存过度消耗。控制活动线程的数量,防止并发线程过多。
  3. 最大的好处就是,当我们想使用时可以直接新建然后加入线程池即可,也可以对线程进行复用,当我们不想使用的时候直接就可以把它关闭。

二.为什么要对线程池进行封装

有的人可能会说, java.util.concurrent.ThreadPoolExecutor;提供了原生的线程池,我们为什么还要对它进行封装呢?直接使用不就好了,那么问题来了?

  1. .ThreadPoolExecutor的使用必须保证一个app中只能拥有一个(也就是必须保证单例模式),否则也无法保证子线程的数木
  2. 封装是为了更好的管理线程,是为了优化代码的使用效率,更好的管理代码。

三.线程池进行封装

####(一)原理分析

  1. 首先先看一下ThreadPoolExecutor的参数

/**

    下面对线程池的方法参数进行解释,其余两个就不解说了,一些参数使用系统默认的即可,
    Runtime.getRuntime().availableProcessors();进行设置
    对于休息时间,则是为了考虑系统长时间运行而导致的系统发热现象,
    一般情况下可以选择为0L
**/

ThreadPoolExecutor  executor = new ThreadPoolExecutor(
                        //1.第一个参数:核心的线程数,
                        corePoolSize,
                        //2.第二个参数,默认使用的最大线程数
                        maximumPoolSize
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值