System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种多线程批量文件上传并显示进度状态的方法与装置制造方法及图纸_技高网

一种多线程批量文件上传并显示进度状态的方法与装置制造方法及图纸

技术编号:42358687 阅读:14 留言:0更新日期:2024-08-16 14:43
本发明专利技术提供一种多线程批量文件上传并显示进度状态的方法与装置,将所有上传任务放入各自对应的单个线程中,并将各个线程放入线程池中执行,从而将多个上传任务的上传任务并行执行,获取每个上传任务的文件总大小,以及每个上传任务的已传文件大小,根据上传文件的文件总大小和已传文件大小得到上传文件的上传进度;在线程池中额外启动一个渲染线程,所述渲染线程实时监听各个所述上传任务的上传进度,并将各个所述上传任务的上传进度渲染至javafx前端界面中。

【技术实现步骤摘要】

本专利技术涉及地质监测,特别是涉及一种多线程批量文件上传并显示进度状态的方法与装置


技术介绍

1、在处理大文件(比如tif航拍影像文件)存储需求时,往往选择使用apache hadoop的hdfs集群。虽然有了文件存储服务端,但要方便客户操作,还要提供一个前端图形界面工具供客户使用,这里我们选择使用javafx开发前端界面,hdfs和javafx都是基于java开发,可以实行无缝对接。

2、javafx前端界面本身是不支持多线程并行渲染的,但往往需要同时上传一批大文件(比如:一批无人机影像文件,几十上百甚至上千个影像文件),如果使用单线程一个个上传,会非常耗时,因此使用多线程提高大批量文件上传性能是急需解决的1个问题。

3、有时候上传的文件特别大(几十上百g,甚至过t),这时候显示文件上传进度变得非常重要,不然用户在等待时间过程中无法得知当前的上传进度,导致用户使用体验大大降低。

4、综上,现有的javafx前端界面无法支持多线程并行渲染,导致上传效率较低,同时在上传过程中无法显示上传进度,导致用户交互体验差。

5、鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。


技术实现思路

1、本专利技术要解决的技术问题是如何对多个上传任务并行执行,同时将各个上传任务的上传进度渲染至前端界面中。

2、本专利技术选中如下技术方案:

3、第一方面,提供一种多线程批量文件上传并显示进度状态的方法,包括:

<p>4、将所有上传任务放入各自对应的单个线程中,并将各个所述单个线程放入线程池中执行;

5、获取每个上传任务的文件总大小,实时获取各个上传任务当前已上传的已传文件大小,根据所述文件总大小和相应的所述已传文件大小得到各个上传任务的上传进度;

6、于所述线程池中额外启动一个渲染线程,所述渲染线程实时监听各个所述上传任务的上传进度,并将各个所述上传任务的上传进度渲染至前端界面中。

7、优选的,所述获取各个上传任务的文件总大小,具体包括:

8、定义上传任务文件总大小map集合对象uploadtotalsizemap;

9、将所述文件总大小存入所述uploadtotalsizemap。

10、优选的,所述实时获取各个上传任务当前已上传的已传文件大小,具体包括:

11、定义上传任务的当前已上传的文件大小map集合对象uploadalreadysizemap;

12、将所述已传文件大小实时存入所述uploadalreadysizemap,并实时更新所述uploadalreadysizemap。

13、优选的,所述实时更新所述uploadalreadysizemap,具体包括:

14、创建uploadprogressmonitor,实现progressable接口,所述uploadprogressmonitor用于监控文件的上传进度,所述progressable接口用于监控上传任务当前已上传至hdfs的文件大小,当hdfs中每上传预设文件大小时,对所述uploadalreadysizemap进行更新。

15、优选的,所述当hdfs中每上传预设文件大小时,对所述uploadalreadysizemap进行更新,具体包括:

16、设定所述uploadalreadysizemap的已上传值的初始值为0,每当所述hdfs接收到预设文件大小时,将所述已上传值在原有值的基础上加上预设文件大小,从而更新得到上传任务的当前已上传的已传文件大小。

17、优选的,所述根据所述文件总大小和相应的所述已传文件大小得到各个上传任务的上传进度,具体包括:

18、定义上传任务的上传进度map集合对象uploadprogressmap,用于存储当前文件的上传进度;

19、通过所述uploadtotalsizemap获取所述上传任务的文件总大小,通过所述uploadalreadysizemap实时获取上传任务当前已上传的已传文件大小;

20、将所述上传任务的文件总大小同所述上传任务当前已上传的已传文件大小对比得到上传进度;

21、将所述上传进度存入所述uploadprogressmap,实时更新所述uploadprogressmap,从而得到上传任务的当前的上传进度。

22、优选的,所述实时更新所述uploadprogressmap,从而得到上传任务的当前的上传进度,具体包括:

23、将uuid标识存入所述uploadprogressmap,设定所述uploadprogressmap的进度值的初始值为0,每当已传文件大小占上传任务的文件总大小的比例增加预设比例时,将所述进度值在原有值的基础上加上所述预设比例,从而更新得到上传任务的当前上传进度。

24、优选的,所述uploadtotalsizemap、所述uploadalreadysizemap和所述uploadprogressmap均支持并发访问。

25、优选的,所述渲染线程实时监听各个所述上传任务的上传进度,具体包括:

26、所述渲染线程实时监听所述uploadprogressmap中的上传进度的变化,并与所述线程池中的其他线程同步执行。

27、第二方面,一种多线程批量文件上传并显示进度状态的装置,包括至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行所述的多线程批量文件上传并显示进度状态的方法。

28、本专利技术实施例提供一种多线程批量文件上传并显示进度状态的方法与装置,将所有上传任务放入各自对应的单个线程中,并将各个线程放入线程池中执行,从而将多个上传任务的上传任务并行执行,获取每个上传任务的文件总大小,以及每个上传任务的已传文件大小,根据上传文件的文件总大小和已传文件大小得到上传文件的上传进度;在线程池中额外启动一个渲染线程,所述渲染线程实时监听各个所述上传任务的上传进度,并将各个所述上传任务的上传进度渲染至前端界面中。

本文档来自技高网
...

【技术保护点】

1.一种多线程批量文件上传并显示进度状态的方法,其特征在于,包括:

2.根据权利要求1所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述获取各个上传任务的文件总大小,具体包括:

3.根据权利要求2所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述实时获取各个上传任务当前已上传的已传文件大小,具体包括:

4.根据权利要求3所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述实时更新所述uploadAlreadySizeMap,具体包括:

5.根据权利要求4所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述当hdfs中每上传预设文件大小时,对所述uploadAlreadySizeMap进行更新,具体包括:

6.根据权利要求5所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述根据所述文件总大小和相应的所述已传文件大小得到各个上传任务的上传进度,具体包括:

7.根据权利要求6所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述实时更新所述uploadProgressMap,从而得到上传任务的当前的上传进度,具体包括:

8.根据权利要求6所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述uploadTotalSizeMap、所述uploadAlreadySizeMap和所述uploadProgressMap均支持并发访问。

9.根据权利要求6所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述渲染线程实时监听各个所述上传任务的上传进度,具体包括:

10.一种多线程批量文件上传并显示进度状态的装置,其特征在于,包括至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9中任一项所述的多线程批量文件上传并显示进度状态的方法。

...

【技术特征摘要】

1.一种多线程批量文件上传并显示进度状态的方法,其特征在于,包括:

2.根据权利要求1所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述获取各个上传任务的文件总大小,具体包括:

3.根据权利要求2所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述实时获取各个上传任务当前已上传的已传文件大小,具体包括:

4.根据权利要求3所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述实时更新所述uploadalreadysizemap,具体包括:

5.根据权利要求4所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述当hdfs中每上传预设文件大小时,对所述uploadalreadysizemap进行更新,具体包括:

6.根据权利要求5所述的多线程批量文件上传并显示进度状态的方法,其特征在于,所述根据所述文件总大小和相应的所述已传文件大小得到各个上传任务的上传进度,具体...

【专利技术属性】
技术研发人员:王辉张永强傅锦荣李泽波沈旭明李庄庄
申请(专利权)人:武汉达梦数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1