CN107786583A - 一种文件下载方法及装置 - Google Patents

一种文件下载方法及装置 Download PDF

Info

Publication number
CN107786583A
CN107786583A CN201610716477.9A CN201610716477A CN107786583A CN 107786583 A CN107786583 A CN 107786583A CN 201610716477 A CN201610716477 A CN 201610716477A CN 107786583 A CN107786583 A CN 107786583A
Authority
CN
China
Prior art keywords
downloaded
thread
download
file
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201610716477.9A
Other languages
English (en)
Inventor
艾东梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201610716477.9A priority Critical patent/CN107786583A/zh
Priority to PCT/CN2017/075606 priority patent/WO2018036133A1/zh
Publication of CN107786583A publication Critical patent/CN107786583A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了一种文件下载方法及装置,该文件下载方法包括:向服务器发送下载请求;接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。本发明提供的文件下载方法,减少了对待下载文件的下载时间,以及减少了对空闲态的线程资源的浪费。

Description

一种文件下载方法及装置
技术领域
本发明涉及网络通信技术领域,尤其是一种文件下载方法及装置。
背景技术
在实际项目中,发现使用android操作系统原生下载技术下载文件,速度和性能上很差强人意。
目前,使用得比较多的Android主流下载方法主要有下面三种:
(1)、文件流的读写方式下载,连接URL(统一资源定位符)的InputStream(输入流)一边读数据,一边写到Android的本地存储器文件中;(2)、用Android自带的DownloadManager(下载管理器)实现下载;(3)、多线程下载技术。
这三种主流的下载方法存在的缺陷主要如下:
(1)、通过文件流读写的方式下载的方法,下载速度很慢,花费时间长,不适合于大文件的下载,容易出现ANR(应用程序无响应)现象;
(2)、DownloadManager(下载管理器)出现在API9(应用程序接口)及以后的Android版本中,下载原理简单,但也存在下载速度慢的问题,性能低下的问题;
(3)、多线程下载技术是对前面两种方法的改进,针对一个下载任务,进行分段下载,由多个线程分别执行各个片段的下载,然后再恢复成完整的文件,通常采用待下载文件总体大小与线程总数的比值表示为单个线程需要下载的数据大小的方式来确定各个线程的工作量。
这种方案的弊端是:有可能文件长度不足以刚好均分给每个线程,有的线程会任务繁重,执行时间很长,导致整体下载时间长;也可能出现由于每个线程执行速度是不均等的,有的线程速度很快,已经执行完了,却需要等待最慢的线程的情况,在实际项目中还遇到过由于某个线程出现卡顿或假死现象,导致该文件一直无法下载完成的情况,使得整体下载时间延长,下载速度慢,甚至无法完成本次下载任务。
发明内容
本发明实施例要解决的技术问题是提供一种文件下载方法及装置,用以实现缩短文件下载时间提高文件下载速度以及最大化避免由于多线程下载技术自身的问题导致的文件下载失败。
为解决上述技术问题,本发明实施例提供的一种文件下载方法,包括:
向服务器发送下载请求;
接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
优选地,所述向服务器发送下载请求的步骤包括:
根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求。
优选地,所述接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符的步骤包括:
接收服务器根据所述下载请求返回的响应消息;
从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符。
优选地,所述数据包头字段还包括:待下载文件的长度;所述方法还包括:
从所述响应消息的数据包头字段,获得待下载文件的长度。
优选地,所述在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载的步骤包括:
根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;
获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容。
优选地,所述获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容后还包括:
将所述各个下载片段的数据内容写入文件存储系统中。
优选地,所述获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容过程中还包括:
在待下载文件的剩余下载量大于预设阈值,且多个线程中有至少一个线程完成该线程对应的下载片段并转为空闲态时,将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载,并由所述空闲态的线程继续向所述服务器发送下载请求;
获得所述服务器根据所述未完成下载任务的线程的下载请求以及所述空闲态的线程发送的下载请求返回的各个下载片段的数据内容。
优选地,所述将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载的步骤包括:
当BCount>FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
当BCount=FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
当BCount<FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载。
根据本发明的另一方面,本发明提供了一种文件下载装置,所述装置包括:
发送模块,用于向服务器发送下载请求;
接收模块,用于接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
下载模块,在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
优选地,所述发送模块具体用于:
根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求。
优选地,所述接收模块包括:
接收子模块,用于接收服务器根据所述下载请求返回的响应消息;
第一获取子模块,用于从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符。
优选地,所述接收模块还包括:
第二获取子模块,用于从所述响应消息的数据包头字段,获得待下载文件的长度。
优选地,所述下载模块包括:
确定子模块,根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
第一发送子模块,根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;
数据内容获取子模块,获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容。
优选地,所述下载模块还包括:
存储子模块,用于获得所述服务器根据所述各线程的下载请求返回的各个下载片段的数据内容后,将所述各个下载片段的数据内容写入文件存储系统中。
优选地,所述数据内容获取子模块包括:
分配下载单元,用于在待下载文件的剩余下载量大于预设阈值,且多个线程中有至少一个线程完成该线程对应的下载片段,并转为空闲态时,将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载,并由所述空闲态的线程继续向所述服务器发送下载请求;
第一获取单元,用于获得所述服务器根据所述未完成下载任务的线程的下载请求以及空闲态的线程发送的下载请求返回的各个下载片段的数据内容。
优选地,所述分配下载单元包括:
第一分配下载子单元,用于当BCount>FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
第二分配下载子单元,用于当BCount=FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
第三分配下载子单元,用于当BCount<FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载。
与现有技术相比,本发明实施例提供的文件下载方法,至少具有以下有益效果:
通过将未完成下载任务的线程的待下载片段的至少一部分分配给处于空闲态的线程,使处于空闲态的线程资源得到合理的利用,避免出现各个线程闲忙不均等的现象,提高了待下载文件的下载速度,降低了对待下载文件的下载时间;同时,减少了资源的消耗,并使得资源得到最优化的利用。
附图说明
图1为本发明实施例所述的文件下载方法的流程示意图;
图2为本发明实施例所述的文件下载方法的一具体实现流程示意图;
图3为本发明实施例所述的文件下载装置的模块示意图;
图4为本发明实施例所述的文件下载装置的具体实现示意图;
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
参照图1,本发明提供了一种文件下载方法,包括以下步骤:
步骤1:向服务器发送下载请求;
步骤2:接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
步骤3:在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
该实施例通过服务器返回的待下载文件的标识符确定对待下载文件的下载方式,多线程的下载方式能够减少对待下载文件下载的时间。将未完成下载任务的线程的待下载片段的至少一部分分配给处于空闲态的线程,使处于空闲态的线程资源得到合理的利用,避免出现各个线程闲忙不均等的现象,提高了待下载文件的下载速度,降低了对待下载文件的下载时间;同时,减少了资源的消耗,并使得资源得到最优化的利用。
参照图2,上述图1所示方法的一具体实现流程包括:
步骤200:向服务器发送下载请求;具体的,可以根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求;
步骤201:接收服务器根据所述下载请求返回的响应消息;
步骤202:从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符,并进一步的,从所述响应消息的数据包头字段,获得待下载文件的长度;
步骤203:根据所述服务器返回的标识符判断待下载文件是否支持多线程下载;
步骤204:根据所述服务器返回的标识符判断出待下载文件不支持多线程下载时,启动单线程下载待下载文件;
步骤205:当所述服务器返回的标识符判断出待下载文件支持多线程下载时,根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
步骤206:根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;多个线程并发且分别独立的向服务器发送下载请求,互不干扰;并且,每个线程分别向服务器发起的下载请求为http下载请求;
步骤207:判断待下载文件的剩余量是否大于预设阈值;其中,该预设阈值是系统自定义的;
步骤208:当待下载文件的剩余下载量小于或等于预设阈值时,由未完成下载任务的线程继续下载对应的待下载片段任务;
步骤209:当待下载文件的剩余下载量大于预设阈值时,判断多个线程中是否有至少一个线程完成该线程对应的下载片段并转为空闲态;当判断出多个线程中没有线程完成该线程对应的下载片段并转为空闲态时,转到步骤208;
步骤210:当待下载文件的剩余下载量大于预设阈值且多个线程中有至少一个线程完成该线程对应的下载片段并转为空闲态时,判断多个线程中未完成下载任务的线程总数BCount是否大于空闲态的线程总数FCount;
步骤211:当待下载文件的剩余下载量大于预设阈值且多个线程中未完成下载任务的线程总数FCount大于空闲态的线程总数FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
步骤212:当待下载文件的剩余下载量大于预设阈值且多个线程中未完成下载任务的线程总数FCount不大于空闲态的线程总数FCount时,判断多个线程中未完成下载任务的线程总数FCount是否等于空闲态的线程总数FCount;
步骤213:当待下载文件的剩余下载量大于预设阈值且多个线程中未完成下载任务的线程总数FCount等于空闲态的线程总数FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
步骤214:当待下载文件的剩余下载量大于预设阈值且多个线程中未完成下载任务的线程总数FCount小于空闲态的线程总数FCount时,当待下载文件的剩余下载量大于预设阈值且多个线程中未完成下载任务的线程总数FCount小于空闲态的线程总数FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载;
步骤215:获得服务器根据步骤208中的未完成下载任务的线程的下载请求以及步骤211、212、213和214中的Bcount个未完成下载任务的线程的下载请求以及Fcount个空闲态的线程发送的下载请求返回的各个下载片段的数据内容;
步骤216:将获得的各个下载片段的数据内容写入到文件存储系统中。
本发明的该实施例中,为了尽可能提高对待下载任务的下载速度以及减少所需下载的时间,当判断出待下载文件的剩余下载量小于或等于预设阈值时,由未完成下载任务的线程继续执行下载对应的待下载片段。
当判断出待下载文件的剩余下载量大于预设阈值并且未完成下载任务的线程总数大于空闲态的线程总数时,通过将未完成下载任务的待下载片段的一部分分配给空闲态的线程,不但实现了对处于空闲态的线程的资源利用,同时还减少了对待下载文件的所需下载时间。
本发明中,系统首先预设一个最低预设阈值(例如10%),随着待下载文件的剩余工作量的减少,系统可根据待下载文件的剩余工作量降低该预设阈值,例如:系统第一次判断待下载文件的预设阈值设置为80%,第二次判断待下载文件的预设阈值设置为70%,当系统第一次判断待下载文件的剩余下载量小于或等于第一预设阈值80%时,系统重新预设第二预设阈值,再对待下载文件的剩余下载量与第二预设阈值进行比较,第二次判断时,判断出待下载文件的剩余工作量小于或等于70%时,系统再次下调与待下载文件的剩余工作量相比较的阈值为60%,此时,若系统第三次判断时,判断出待下载文件的剩余工作量大于60%,系统再次重复进行上述步骤209至步骤215记载的工作流程,当判断出待下载文件的剩余下载量小于或等于系统预设的最低预设阈值10%时,系统则重复进行步骤208记载的工作流程,直至对待下载文件的下载结束。
系统根据写入到文件存储系统中的各个线程下载的下载片段长度的数据内容的长度大小判断各个线程所处的下载状态,实时更新待下载文件的下载量。
通过本发明提供的文件下载方法,根据服务器返回的待下载文件的标识符确定对待下载文件的下载方式,避免因选错下载方式导致待下载文件无法下载的情况出现。
在对待下载文件进行多线程下载时,通过对已完成下载任务的处于空闲态的线程进行资源利用,将未完成下载任务的线程对应的下载片段的至少一部分分配给空闲态的线程协助下载,并且根据文中描述的算法循环执行该过程,进而可以大幅度的减少待下载文件的下载时间,提高下载速度,并且使得空闲态的线程资源得到最优化的利用。
如图3所示,根据本发明的另一方面,本发明还提供了一种文件下载装置,所述装置包括:
发送模块1,用于向服务器发送下载请求;
接收模块2,用于接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
下载模块3,在所述标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
进一步的,所述发送模块具体用于:
根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求。
进一步的,所述接收模块2包括:
接收子模块21,用于接收服务器根据所述下载请求返回的响应消息;
第一获取子模块22,用于从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符。
进一步的,所述接收模块2还包括:
第二获取子模块23,用于从所述响应消息的数据包头字段,获得待下载文件的长度。
进一步的,所述下载模块3包括:
确定子模块31,根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
第一发送子模块32,根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;
数据内容获取子模块33,获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容。
进一步的,所述下载模块还包括:
存储子模块34,用于获得所述服务器根据所述各线程的下载请求返回的各个下载片段的数据内容后,将所述各个下载片段的数据内容写入文件存储系统中。
进一步的,所述数据内容获取子模块33包括:
分配下载单元331,用于在待下载文件的剩余下载量大于预设阈值,且多个线程中有至少一个线程完成该线程对应的下载片段,并转为空闲态时,将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程,并由所述空闲态的线程继续向所述服务器发送下载请求;
第一获取单元332,用于获得所述服务器根据所述未完成下载任务的线程的下载请求以及空闲态的线程发送的下载请求返回的各个下载片段的数据内容。
进一步的,所述分配下载单元331包括:
第一分配下载子单元3311,用于当BCount>FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
第二分配下载子单元3312,用于当BCount=FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
第三分配下载子单元3313,用于当BCount<FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载。
本发明提供的文件下载的装置,同样可以将未完成下载任务的线程对应的待下载片段的至少一部分分配给空闲态的线程,可以提高待下载文件的下载速度,并且可以实现对资源的最大利用。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (16)

1.一种文件下载方法,其特征在于,所述方法包括:
向服务器发送下载请求;
接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
2.根据权利要求1所述的文件下载方法,其特征在于,所述向服务器发送下载请求的步骤包括:
根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求。
3.根据权利要求1所述的文件下载方法,其特征在于,所述接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符的步骤包括:
接收服务器根据所述下载请求返回的响应消息;
从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符。
4.根据权利要求3所述的文件下载方法,其特征在于,所述数据包头字段还包括:待下载文件的长度;所述方法还包括:
从所述响应消息的数据包头字段,获得待下载文件的长度。
5.根据权利要求4所述的文件下载方法,其特征在于,所述在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载的步骤包括:
根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;
获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容。
6.根据权利要求5所述的文件下载方法,其特征在于,所述获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容后还包括:
将所述各个下载片段的数据内容写入文件存储系统中。
7.根据权利要求5所述的文件下载方法,其特征在于,所述获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容过程中还包括:
在待下载文件的剩余下载量大于预设阈值,且多个线程中有至少一个线程完成该线程对应的下载片段并转为空闲态时,将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载,并由所述空闲态的线程继续向所述服务器发送下载请求;
获得所述服务器根据所述未完成下载任务的线程的下载请求以及所述空闲态的线程发送的下载请求返回的各个下载片段的数据内容。
8.根据权利要求7所述的文件下载方法,其特征在于,所述将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载的步骤包括:
当BCount>FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
当BCount=FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
当BCount<FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载。
9.一种文件下载装置,其特征在于,所述装置包括:
发送模块,用于向服务器发送下载请求;
接收模块,用于接收服务器根据所述下载请求返回的待下载文件是否支持多线程下载的标识符;
下载模块,在所述服务器返回的标识符表示所述待下载文件支持多线程下载时,启动多线程对所述待下载文件进行下载。
10.根据权利要求9所述的文件下载装置,其特征在于,所述发送模块具体用于:
根据待下载文件的统一资源定位符URL,向服务器发送超文本传输协议http请求。
11.根据权利要求9所述的文件下载装置,其特征在于,所述接收模块包括:
接收子模块,用于接收服务器根据所述下载请求返回的响应消息;
第一获取子模块,用于从所述响应消息的数据包头字段,获得待下载文件是否支持多线程下载的标识符。
12.根据权利要求11所述的文件下载装置,其特征在于,所述接收模块还包括:
第二获取子模块,用于从所述响应消息的数据包头字段,获得待下载文件的长度。
13.根据权利要求12所述的文件下载装置,其特征在于,所述下载模块包括:
确定子模块,根据所述待下载文件的长度,确定待启动的多个线程数目以及每个线程欲下载片段的大小;
第一发送子模块,根据所述每个线程欲下载片段的大小,多个线程并发向所述服务器发送下载请求;
数据内容获取子模块,获得所述服务器根据所述多个线程的下载请求返回的各个下载片段的数据内容。
14.根据权利要求13所述的文件下载装置,其特征在于,所述下载模块还包括:
存储子模块,用于获得所述服务器根据所述各线程的下载请求返回的各个下载片段的数据内容后,将所述各个下载片段的数据内容写入文件存储系统中。
15.根据权利要求13所述的文件下载装置,其特征在于,所述数据内容获取子模块包括:
分配下载单元,用于在待下载文件的剩余下载量大于预设阈值,且多个线程中有至少一个线程完成该线程对应的下载片段,并转为空闲态时,将多个线程中未完成下载任务的线程对应的待下载片段的至少一部分,分配给所述空闲态的线程进行下载,并由所述空闲态的线程继续向所述服务器发送下载请求;
第一获取单元,用于获得所述服务器根据所述未完成下载任务的线程的下载请求以及空闲态的线程发送的下载请求返回的各个下载片段的数据内容。
16.根据权利要求15所述的文件下载装置,其特征在于,所述分配下载单元包括:
第一分配下载子单元,用于当BCount>FCount时,确定多个所述未完成下载任务的线程中的Fcount个线程的各自待下载片段的一半,分别分配给Fcount个空闲态的线程进行下载,其中,BCount为多个线程中未完成下载任务的线程的总数;FCount为所述空闲态的线程的总数;且所述FCount个未完成下载任务的线程的待下载片段剩余量是BCount个未完成下载任务的线程中待下载片段剩余量最多的前FCount个未完成下载任务的线程;
第二分配下载子单元,用于当BCount=FCount时,将BCount未完成下载任务的线程的待下载片段剩余量的一半,分别分配给FCount个空闲态的线程进行下载;
第三分配下载子单元,用于当BCount<FCount时,将BCount未完成下载任务的线程的待下载片段剩余量,等分为BCount+FCount份,分别分配给BCount个未完成下载任务的线程和FCount个所述空闲态的线程进行下载。
CN201610716477.9A 2016-08-24 2016-08-24 一种文件下载方法及装置 Withdrawn CN107786583A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610716477.9A CN107786583A (zh) 2016-08-24 2016-08-24 一种文件下载方法及装置
PCT/CN2017/075606 WO2018036133A1 (zh) 2016-08-24 2017-03-03 一种文件下载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610716477.9A CN107786583A (zh) 2016-08-24 2016-08-24 一种文件下载方法及装置

Publications (1)

Publication Number Publication Date
CN107786583A true CN107786583A (zh) 2018-03-09

Family

ID=61245417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610716477.9A Withdrawn CN107786583A (zh) 2016-08-24 2016-08-24 一种文件下载方法及装置

Country Status (2)

Country Link
CN (1) CN107786583A (zh)
WO (1) WO2018036133A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106550042A (zh) * 2016-11-23 2017-03-29 广州优视网络科技有限公司 多线程下载方法和装置及计算设备
CN109040230A (zh) * 2018-07-31 2018-12-18 优视科技新加坡有限公司 文件的下载方法、装置、设备/终端/服务器及存储介质
CN110224863A (zh) * 2019-05-22 2019-09-10 钛马信息网络技术有限公司 一种文件加速下载方法及装置
CN110572456A (zh) * 2019-09-09 2019-12-13 广东国粒教育技术有限公司 一种教学资源编辑方法及系统
CN110784528A (zh) * 2019-10-22 2020-02-11 北京天融信网络安全技术有限公司 一种文件下载方法、装置和存储介质
CN111131410A (zh) * 2019-12-10 2020-05-08 武汉联影医疗科技有限公司 图像下载方法、计算机设备和存储介质
CN114629895A (zh) * 2022-03-22 2022-06-14 平安证券股份有限公司 一种文件分片断点续传方法、装置、终端设备及介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110620795A (zh) * 2018-06-19 2019-12-27 优视科技有限公司 文件下载中断续传的方法、装置及终端
CN110430279B (zh) * 2019-08-14 2022-12-09 平安普惠企业管理有限公司 文件下载控制方法及装置
CN114040380B (zh) * 2021-11-08 2023-08-01 北京百度网讯科技有限公司 一种数据下发方法、装置、电子设备、介质及产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103391454A (zh) * 2013-07-12 2013-11-13 三星电子(中国)研发中心 一种多线程下载方法和装置
CN103634383A (zh) * 2013-11-21 2014-03-12 北京奇虎科技有限公司 基于移动终端的多链接分段下载方法和移动终端
US20150365350A1 (en) * 2014-06-12 2015-12-17 Netease (Hangzhou) Network Co., Ltd. Resource downloading method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103391454A (zh) * 2013-07-12 2013-11-13 三星电子(中国)研发中心 一种多线程下载方法和装置
CN103634383A (zh) * 2013-11-21 2014-03-12 北京奇虎科技有限公司 基于移动终端的多链接分段下载方法和移动终端
US20150365350A1 (en) * 2014-06-12 2015-12-17 Netease (Hangzhou) Network Co., Ltd. Resource downloading method and apparatus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谷建光: "基于HTTP协议的多线程网络下载框架的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106550042A (zh) * 2016-11-23 2017-03-29 广州优视网络科技有限公司 多线程下载方法和装置及计算设备
CN106550042B (zh) * 2016-11-23 2019-08-23 广州优视网络科技有限公司 多线程下载方法和装置及计算设备
CN109040230A (zh) * 2018-07-31 2018-12-18 优视科技新加坡有限公司 文件的下载方法、装置、设备/终端/服务器及存储介质
CN109040230B (zh) * 2018-07-31 2021-06-04 优视科技新加坡有限公司 文件的下载方法、装置、设备/终端/服务器及存储介质
CN110224863A (zh) * 2019-05-22 2019-09-10 钛马信息网络技术有限公司 一种文件加速下载方法及装置
CN110572456A (zh) * 2019-09-09 2019-12-13 广东国粒教育技术有限公司 一种教学资源编辑方法及系统
CN110784528A (zh) * 2019-10-22 2020-02-11 北京天融信网络安全技术有限公司 一种文件下载方法、装置和存储介质
CN111131410A (zh) * 2019-12-10 2020-05-08 武汉联影医疗科技有限公司 图像下载方法、计算机设备和存储介质
CN114629895A (zh) * 2022-03-22 2022-06-14 平安证券股份有限公司 一种文件分片断点续传方法、装置、终端设备及介质
CN114629895B (zh) * 2022-03-22 2023-10-13 平安证券股份有限公司 一种文件分片断点续传方法、装置、终端设备及介质

Also Published As

Publication number Publication date
WO2018036133A1 (zh) 2018-03-01

Similar Documents

Publication Publication Date Title
CN107786583A (zh) 一种文件下载方法及装置
US7441240B2 (en) Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling
JP2009282807A (ja) メッセージ紐付け処理装置、方法及びプログラム
CN105786603B (zh) 一种基于分布式的高并发业务处理系统及方法
JP2003241980A (ja) マルチプロセッサ・コンピュータ・システムのためのスレッド・ディスパッチ機構及び方法
CN105450769A (zh) 一种文件传输的方法及装置
CN109710716A (zh) 地图流畅渲染方法、终端设备及计算机可读存储介质
CN113961346A (zh) 数据缓存的管理与调度方法、装置、电子设备和存储介质
US20140115601A1 (en) Data processing method and data processing system
KR102621670B1 (ko) 부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치
US20140292783A1 (en) Drawing processor, drawing processing system, and drawing processing method
US7424712B1 (en) System and method for controlling co-scheduling of processes of parallel program
CN106775975A (zh) 进程调度方法及装置
CN110209447A (zh) 一种列表页数据显示方法以及列表页数据显示装置
CN105915610A (zh) 一种异步通信方法和装置
CN109766168B (zh) 任务调度方法和装置、存储介质以及计算设备
CN106358085B (zh) 电视待机状态下任务管理方法及电视
JP4182057B2 (ja) キーイベント制御装置
CN107526632B (zh) 进程池扩充方法和装置
CN111858418B (zh) 一种基于远程直接内存访问rdma的内存通信方法及装置
CN112600913A (zh) 一种基于Android的下载管理方法
CN112650450B (zh) 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘
CN113742052B (zh) 批量任务处理方法和装置
CN110134453B (zh) 服务器配置重载方法及服务器
JP2006091969A (ja) 情報処理装置およびスケジューリング方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20180309