【发布时间】:2013-05-14 20:11:15
【问题描述】:
我正在开发一个 Android 应用程序,其目的是从 2 个服务器下载块(视频文件的一部分),按顺序附加它们(到主视频中文件)下载完每个文件后,最后播放此视频文件,同时继续下载..
当下载通过使用执行下载的两个不同线程(每个服务器一个)串行完成时,这很有效。我想知道如何通过并发下载而不是串行下载来实现上述目标。
即同时按顺序从服务器下载块。例如,同一时间从server1下载chunk0、chunk1和chunk2(比方说比server2快3倍)和从server2下载chunk3,这样我们就完全使用了所有可用带宽这段时间的2台服务器。这个过程会一直重复,直到所有的块都下载完毕。
如上所述,通过使用线程和连接,下载是串行的。为了使其并发,我尝试从每个线程中删除连接,但是它不会按顺序下载块,并且也只从一个服务器下载,而不是从两个服务器下载。 AsyncTask 不是解决方案,因为它也不会按顺序下载块。
那么,有什么方法可以实现我上面描述的并发和顺序下载块?有没有人做过这样的项目,以便确定答案?
【问题讨论】:
标签: java android concurrency chunks