线程池技术

什么是线程池
线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中并等待下一次分配任务。
为什么要使用线程池

程序启动新线程的成本比较高  他要涉及到与操作系统进行交互(操作系统创建 进程)而线程使用进程的资源    使用线程池可以很好的提高性能
尤其是当程序中要创建大量生存期很短的线程时
线程池的好处是使用多线程
线程池里面的每一个线程代码结束后  都不会死亡   而是再次回到线程池中 等待下一个对象来使用



4.常见线程池
①newSingleThreadExecutor
单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务
②newFixedThreadExecutor(n)
固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行
③newCacheThreadExecutor(推荐使用)
可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程,当有任务来时,又智能的添加新线程来执行。
④newScheduleThreadExecutor

大小无限制的线程池,支持定时和周期性的执行线程





多线程下载和断点续传的原理

为什么要用多线程下载

为了抢占更多的服务器资源   更高效率的完成下载

创建工作线程

通过httphead获取服务器文件的大小

创建本地文件  大小与服务器文件一致

设计线程数  计算每条线程的下载量

再次进行网络请求  获取文件内容

当用户点击暂停的时候

将文件保存下来




三级缓存

优点    节省流量

减少服务器的压力

增强 用户体验

从网络获取    存到内存 (软引用      当内存不足的时候才会回收对象          lrucatch 最近最少使用原则 Linkedhashmap 环形2链表    作用是内存达到上限的时候 会将最近访问的放在最前面的时候   不经常访问的(灵活性强))  在存到本地











当用户点击开始的时候

读取文件

计算百分比 将下载量设置给progressbar 并且更新进度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值