第十三章 黑马程序员安卓教程:JavaSE 实现多线程下载.docxVIP

  • 8
  • 0
  • 约6.12千字
  • 约 6页
  • 2017-06-17 发布于湖北
  • 举报

第十三章 黑马程序员安卓教程:JavaSE 实现多线程下载.docx

JavaSE 实现多线程下载 多线程下载原理 多线程下载就是将同一个网络上的原始文件根据线程个数分成均等份,然后每个单独的线程下载对应的一部分,然后再将下载好的文件按照原始文件的顺序“拼接”起来就构成了完整的文件了。这样就大大提高了文件的下载效率。 多线程下载大致可分为以下几个步骤:一、获取服务器上的目标文件的大小 显然这一步是需要先访问一下网络,只需要获取到目标文件的总大小即可。目的是为了计算每个线程应该分配的下载任务。 二、计算每个线程下载的起始位置和结束位置我们可以把原始文件当成一个字节数组,每个线程只下载该“数组”的指定起始位置和指定结束位置 之间的部分。在第一步中我们已经知道了“数组”的总长度。因此只要再知道总共开启的线程的个数就好计算每个线程要下载的范围了。 每个线程需要下载的字节个数(blockSize)=总字节数(totalSize)/线程数(threadCount)。假设给线程按照 0,1,2,3...n 的方式依次进行编号,那么第 n 个线程下载文件的范围为: 起始脚标 startIndex=n*blockSize。 结束脚标 endIndex=(n-1)*blockSize-1。 考虑到 totalSize/threadCount 不一定能整除,因此对已最后一个线程应该特殊处理,最后一个线程的起始脚标计算公式不变,但是结束脚标 endIndex=totalS

文档评论(0)

1亿VIP精品文档

相关文档