`
zhuyufufu
  • 浏览: 140676 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

多线程下载实践

阅读更多
多线程下载的意义(网上搜的资料和自己理解的差不多拿来用下 忘了出处了暂不注明):

    所谓断点续传即下载过程可以中途暂停,然后再从停止点继续下载过程,并最终获得完整的文件,断点续传需要服务器支持。
    多线程下载也需要服务器支持断点续传功能,此时文件可以分成几个部分,并且同时进行下载,以提高下载速度。也就是说,对于同一个下载文档,设置不同的下载起点,然后一起开始下载。
    通常服务器同时与多个用户连接,用户之间共享带宽。如果N个用户的优先级都相同,那么每个用户连接到该服务器上的实际带宽就是服务器带宽的N分之一。如果你通过多个线程同时与服务器连接,那么你就可以榨取到较高的带宽了。例如原来有10个用户都通过单一线程与服务器相连,服务器的总带宽假设为56Kbps,则每个用户(每个线程)分到的带宽是5.6Kbps,即0.7K字节/秒。如果你同时打开两个线程与服务器连接,那么共有11个线程与服务器连接,而你获得的带宽将是56/11*2=10.2Kbps,约1.27K字节/秒,将近原来的两倍。


多线程下载的说明:
    多线程下载是一个比较让服务器管理者头痛同时又是让热爱下载者欣喜的技术。就我个人的下载经验而言,许多的服务器虽然支持多线程下载但是会对其进行限制。这时就需要对服务器的限制进行探测,找到其限制个数,做到下载自适应。对于突破下载限制,这就不在我能力范围了。
    虽然原则上我也不支持多线程下载。但是公司的破网络需要200人左右共享10M带宽,经常是单线程下载1小时,20M的东西还没下完,太考验人的耐心了。平时在家里,合租者经常在线看视频,这时需要对其做一个限制(单纯的口头教育是没有什么用的),用高性能路由器的可以做些设置,对于那些无法设置的只有和他们抢占带宽了(这个纯属误导,和谐相处才是大势所趋)。
    这里介绍有关多线程下载的网络上常见一些词汇:单线程,双线程,多线程,断点续传。
    常用的多线程下载软件:迅雷,旋风,快车等。
    多线程下载技术并不复杂,估计在大学里学完网络编程就可以用C++实现了。现在我才考虑用java实现它,真是让人感触良多啊!


关于多线程下载实践:
    由于最近比较闲,特研究一下断点续传。
    原因:有一次项目经理找我面谈时拿一系列的技术来打击我,断点续传就是其中之一,而且是我最不熟悉的内容。
    过程:第一步上网查资料(如上多线程下载的意义);第二步查找java实现;第三步思考自己实现。
    目标:做成一个提供下载服务的jar,让其与项目中下载的实现有较好的模块分离。
    由于网上有很多java的http的多线程下载示例,重写这些代码没有什么意义,对自己技术的提高也没什么效果。故决定在其中一个已有代码基础上进行扩展,做成一个服务提供形式的模块,这样别的工程引入这个实现时不需要对多线程下载的具体实现再重写或者进行大的改动。
    引用的基础代码是javaeye上的一篇博客内容,现介绍其连接:http://www.iteye.com/topic/427397
   对其的扩展主要包括:面向接口的服务提供形式,底层下载的封装,下载参数设置的提供
,下载暂停及继续的实现,下载链接的简单解析功能。
    暂未实现的扩展:下载文件大小及已下载文件大小的接口提供(下载进度),ftp下载的实现,是否支持断点续传(即多线程下载,这包括http与ftp两部分)。
    发散思考:多线程上传的意义与实现


代码解说:暂不提供




项目源码:见附件 这是第一版本 

分享到:
评论

相关推荐

    C# Winform 多线程下载

    在C# Winform应用中实现多线程下载是一项常见的任务,尤其在处理大文件或需要提高下载速度的情况下。本文将详细讲解如何利用C#的多线程技术来创建一个Winform应用程序,实现高效的文件下载功能。 首先,我们需要...

    httpclient多线程下载(分段下载)实践

    本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...

    多线程分别下载文件

    在Android开发中,多线程技术常常用于提升应用程序的性能,特别是在处理耗时操作,如文件下载时。这个"多线程分别下载文件"的Demo是针对在ListView或GridView控件中实现的一项功能,允许用户选择多个文件进行并行...

    易语言多线程下载不卡速度快

    总结来说,这个易语言项目展示了如何利用多线程技术提高下载效率和用户体验,对于学习易语言和多线程编程的开发者来说,这是一个很好的实践案例。通过阅读和分析提供的源代码,我们可以了解到如何在易语言中实现线程...

    多线程下载+进度条

    在IT领域,多线程下载和进度条显示是提高用户体验和优化下载效率的重要技术。这里我们将深入探讨这两个概念以及如何实现它们。 首先,多线程下载是指在一个下载任务中使用多个独立的线程同时从服务器获取数据。这种...

    Java多线程与线程安全实践(基于Http协议的断点续传)源码.zip

    Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多...

    delphi多线程批量下载

    在IT行业中,多线程技术是一项关键的编程概念,它允许程序同时执行多个任务,显著提高了效率和响应...通过学习和实践,开发者不仅可以掌握多线程编程,还能了解到如何应对网络环境下的挑战,提高软件的性能和用户体验。

    qt多线程高效下载文件

    在IT行业中,Qt是一个非常流行的跨平台应用程序开发框架,它由C++编写并提供了一整套丰富的库,用于创建桌面、移动以及嵌入式...通过深入研究和实践,开发者可以掌握如何在实际项目中高效地利用Qt实现多线程下载功能。

    人工智能-项目实践-多线程-断点续传与多线程下载.zip

    在这个名为"人工智能-项目实践-多线程-断点续传与多线程下载.zip"的压缩包中,可能包含了一个使用Retrofit库实现的断点续传和多线程下载的项目实例。现在,我们将深入探讨这两个主题。 **断点续传** 断点续传是一...

    多线程下载原理

    在IT领域,多线程下载是一项重要的技术,尤其在处理大文件或大量数据时,能够显著提高下载效率。本文将详细解析"多线程下载原理",并结合提供的java工程net和android工程videonews来深入理解这一概念。 首先,我们...

    Java多线程与线程安全实践-基于Http协议的断点续传

    Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多...

    多线程下载demo

    在IT领域,多线程下载是一种常见的优化网络资源获取的技术,尤其在大文件下载时能够显著提高下载速度。本文将详细解析多线程下载的原理、实现方式以及断点续传的概念。 首先,多线程下载的核心思想是将一个大的文件...

    多线程下载.rar

    在IT领域,多线程是一种常见的编程技术,用于提高程序的执行效率,特别是在处理大量数据或者需要并发操作的场景下,如下载大文件时。在这个"多线程下载.rar"压缩包中,我们找到了一个利用ActiveX技术实现的多线程...

    多线程下载

    在计算机编程领域,多线程下载是一种优化网络资源获取的技术,尤其在处理大文件或高带宽需求时显得尤为重要。这种技术通过同时开启多...同时,分析和调试代码文件,有助于深入掌握多线程编程的实践技巧,提升编程能力。

    Android实现多线程下载

    在Android平台上,多线程下载是一项重要的...通过上述知识点的掌握和实践,我们可以构建一个高效、可靠的多线程下载系统。在实际项目中,还可以考虑优化如线程数量的动态调整、下载速度控制等细节,以提升用户体验。

    android多线程下载

    在Android开发中,多线程下载是一项常见的任务,特别是在处理大文件时,为了提高用户体验,通常需要实现下载的暂停、断点续传功能。本文将深入解析如何在Android环境中实现这样的功能。 首先,理解“多线程下载”的...

    多线程下载工具

    标题中的“多线程下载工具”指的是一个利用多线程技术来提高文件下载速度的应用程序。在计算机编程中,多线程是指在一个程序内同时执行多个独立的线程,每个线程负责不同的任务,比如在下载场景中,一个线程负责处理...

    JAVA多线程与线程安全实践-基于Http协议的断点续传.rar

    JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多线程与线程安全实践-基于Http协议的断点续传 JAVA多...

    Java多线程与线程安全实践-基于Http协议的断点续传.zip

    Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与线程安全实践-基于Http协议的断点续传Java多线程与...

Global site tag (gtag.js) - Google Analytics