Java Android多线程文件下载速度更快

Java Android多线程文件下载速度更快,java,android,multithreading,performance,download,Java,Android,Multithreading,Performance,Download,我正在开发一个需要下载大视频文件(300-500MB)的应用程序。 我想知道是否有办法使用多线程加速单个文件的下载。 我在TubeMate之类的应用程序上见过这种类型的实现,但我对用于实现它的代码一无所知。 我不需要你为我编写代码:)我只需要一个起点,比如一篇关于这方面的文章或教程,tks。不管找到库函数,你也可以编写自己的脚本来处理部分下载 例如,在PHP中,可以使用fopen()、fread()。。。函数用于在服务器上打开流,将文件查找到特定位置,并将字节传输给请求者。文件偏移量和块长度参数

我正在开发一个需要下载大视频文件(300-500MB)的应用程序。
我想知道是否有办法使用多线程加速单个文件的下载。
我在TubeMate之类的应用程序上见过这种类型的实现,但我对用于实现它的代码一无所知。

我不需要你为我编写代码:)我只需要一个起点,比如一篇关于这方面的文章或教程,tks。

不管找到库函数,你也可以编写自己的脚本来处理部分下载

例如,在PHP中,可以使用fopen()、fread()。。。函数用于在服务器上打开流,将文件查找到特定位置,并将字节传输给请求者。文件偏移量和块长度参数将由客户端使用POST或GET方法设置

检查。也许这对你有点帮助


另一方面,如果您没有访问服务器的权限,并且您只想改进从任何Internet站点的下载,那么您可以查找或。

视频可以表示为字节数组。若你们想更快地加载数组,你们可以把它分成几个部分,然后在单独的线程中加载每个部分。 最好的方法是使用ThreadPoolExecutor运行任务,使用FutureTask检索结果。 如果您需要从internet上下载视频,您的服务器应该支持可以为您提供“部分”视频的api调用。
下面是如何使用Executors和Futures的一个很好的示例:

是的,如果您的服务器支持它,您可以使用
范围
标题对其进行多线程处理。不过,它需要事后重建文件。不过,我怀疑它是否真的能加快下载速度。我将首先确定下载过程中的瓶颈。@njzk2是否有任何关于
范围头的文章,并在后面重构文件,以供共享?我同意@njzk2。大部分魔法都是由服务器来处理的,因此在应用程序方面似乎没有那么困难(跟踪块以便以后重构)。只有当服务器对每个连接都有带宽阈值时,才会有改进。@Tuga:不太可能,但基本思想很简单:使用
Range
,向服务器请求文件的特定块。您将它们保存在某个位置,然后按正确的顺序放入一个文件中。@njzk2范围请求对所有服务器都有效吗?