多线程下载

多线程下载的使用的方法是分治法,把一个问题分成多个子问题,每个子问题解决之后,总问题也就得到了解决。子问题还可以细分为子子问题,当我们的计算资源有剩余时就应该增加细分粒度。

比如我们有一个大小为100M的文件需要处理,我们用10个线程来分解这100M文件,每个线程分到10M。假如10个线程同时开始,但是线程调度出现严重问题导致只有2个线程下载完了20M,我们还有80M内容需要下载,又假如此时用户点了暂停和重新开始。我们有10个线程,接下来就还是用这10个线程来处理80M的内容,这样线程也得到了充分的利用。当然如果按照之前每个线程处理10M也可以,而且还不用重新计算每个线程处理文件时的偏移信息。

我们来看看Android上的多线程下载怎么来实现。

1.获取某个URL对应的内容大小,这个可能是个html/txt/exe/apk等,反正就是一个URL,我们调用

java.net.URLConnection.getContentLength()方法可以获取一个URL对应的内容大小,比如一个文件100M

2.我们分配使用多少个线程来处理这个流,比如我们声明3个

3.随机一个全局的文件名 UUID.randomUUID()

4.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值