java多线程下载技术论文Word格式.docx
《java多线程下载技术论文Word格式.docx》由会员分享,可在线阅读,更多相关《java多线程下载技术论文Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
关键词:
多线程;
线程安全;
断点续传
Abstract
ThelineChengcanunderstandthepassagefortimebeloadedwith,alineChengisadocumenttimebeloadedwithpassage,multiwireChengisjusttoopenupseveraltimebeloadedwithpassageatthesametime.Beingputintousedownloadingpersonistosharebandwidth'
swhiletheserverprovidestimebeloadedwithservice,theaveragethegeneralservermeetingiscarriedoutongeneraltimebeloadedwithlineChengdistributesunderpreferentialstepisidenticalsituation.ThelineChengisgettingquickerasdownloadingspeedmuchmore.ThepopulartimebeloadedwithsoftwareallsupportsmultiwireCheng.Thesimultaneousandmanyconsumerofserverlinksupgenerally,sharesbandwidthbetweentheconsumer.Ifconsumer'
sNpreferentialstepisallidentical,everyconsumerlinksNoneofmarkbeingserverbandwidthtoowingupperrealityofserverbandwidthso.Fruittheconsumernumberismore,everyconsumercanonlyoccupypitifullittlebandwidththen,downloadingthemeetingisendlessprocess.Studycontentconcretely:
Thetimebeloadedwithfunctionrealizes,includesthesinglelineChengtimebeloadedwithfunction,multi-threadtimebeloadedwithfunction,themultitaskingdownloadsafunction,deletethemissionrealization.Breakingpointaddsbiographywaitforafunctiontosuspendtimebeloadedwithinincluding,downloadingprocess,carriesonnotbecompletedtimebeloadedwithlasttimemission.
Keywords:
Multithreading;
Threadsecurity;
Broken/Resume
目录
1引言1
1.1网络下载技术3
1.2网络基本构架3
1.3多线程技术3
2.1课题的研究背景与意义3
2.1.1课题的研究背景3
2.1.2课题的研究意义4
2.1.3多线程下载的现状及发展趋势4
2.2可行性分析5
2.2.1技术可行性5
2.2.2操作可行性6
3相关基础知识以6
3.1JAVA中的多线程与线程安全6
3.1.1Java中的多线程6
3.1.2Java中的线程安全7
3.2Http协议简介8
3.3断点续传原理8
4需求分析10
4.1用户需求分析10
4.2业务流分析11
5.整体设计11
5.1系统设计要点11
5.2系统总体功能结构12
5.3开发环境:
myeclipse+SWT15
5.4URL类和URLConnection类的使用15
6.系统实现16
6.1用户界面实现16
6.2下载任务实现20
6.2.1下载任务类图20
6.2.2下载任务顺序图20
6.2.3下载任务具体实现21
6.3监控下载信息设计25
6.3.1监控下载信息类图25
6.3.2监控下载信息顺序图26
6.3.3监控下载信息实现26
结论27
参考文献28
致谢29
1引言
1.1网络下载技术
网络下载技术一直是网络发展的重要推动力之一。
原先的信息资源共享主要通过Wed技术实现,即先把共享的文件放到服务器上,然后客户机便可以通过HTTP和FTP等协议从服务器下载这些文件,这就是所谓的C/S结构。
随着网络应用及网络用户的大量增加,Wed服务器需要对非常多的用户访问提供支持,这使得Wed服务器的性能成为了这类下载技术的最大瓶颈。
这种情况下,以资源分散、负载均衡和非中心化为特点的PZP技术在文件共享领域得到了巨大的发展,它将共享的文件存储在客户机结点上,用户之间可以直接共享和传输文件而不需要通过中央服务器,此外,PZP技术还可以充分利用参与结点的带宽,通过大量结点之间互相传递数据、合作下载的方式来提高网络中传送大容量文件的效率,例如BitT0rrent、eDonke岁eMule等。
虽然PZP技术以完全脱离中心服务器为研究的重点,但目前在网络下载的实际应用中,服务器模式还仍然发挥着不可替代的作用,所以就发展出了一种所谓的PZSP技术,也就是PeertoServerandPeer技术。
其实不过是传统C/S方式和一些PZP技术的结合,可以认为是一个NaPster网络、BitTorrent网络和传统wed网络的混合体,实际上仍然属于一种中心非结构化的PZP网络。
PZSP技术利用一个中心服务器来存放大量的下载资源链接信息(URL),当客户请求下载某个资源时,中心服务器就将相关的下载链接和一个peer的列表返回给客户,让客户从多个服务器下载资源的同时也将获得的资源上传给其他peers。
PZSP在国内以迅雷的代表取得了巨大成功。
对应以上网络技术的发展,就国内最普遍的应用而言,可以分为三个阶段:
第一个阶段,以HTTP、FTP为主,并发展出了多线程下载方式,以FlashGet、NetAts为代表。
这种下载模式由于受到服务器带宽的限制会严重影响下载的速度。
第二个阶段,以BT和eMule为代表的PZP方式,其主要特征是下载源分布在众多个人终端电脑上,这种方式避免了单一带宽对下载速度的影响,然而由于下载育源头是个人电脑,其稳定性受到了一定的制约。
第三个阶段,以迅雷等为代表。
整合了网络搜索、HTTP下载、FTP下载和P2P(BT、eMule)下载等多种技术,这种方式将多个Web服务器和客户一起组成PZP网络,保证了下载的速度和稳定性
1.2网络下载基本构架
网络下载基本构架主要包括两种:
C/S与P2P架构。
传统的C/S网络发展出了HTTP压TP下载,并在客户端发展出了多线程下载方式;
而P2P网络则发展出了BT、eMule这样的多源文件传输方式。
传统的HTTP/FTP下载方式都是属于C/S架构,即客户端/服务器架构。
这种模式的基本方法是将共享文件上传服务器上,而需要这些文件的用户再向服务器索取和下载共享文件,也就意味着来自各个客户端的大量的上传下载数据都必须经过服务器这个中转站。
BT协议则是属于P2P架构,即PeertoPeer。
虽然对于PZP并没有一个统一的定义或标准,但PZP都有一个共同点就是充分利用各结点的资源,形成一个自组织网络,在网络中每个结点都是对等的,既享受别人的服务也为别人提供服务,传输文件数据时不再需要经过服务器。
1.3多线程技术
传统操作系统中的单线程进程由进程控制块和用户地址空间、以及管理进程执行的调用/返回行为的系统堆栈或用户堆栈构成。
如果把进程的管理和执行相分离,进程作为操作系统中进行保护和资沮分配的单位,允许一个进程中包含有多个可并发执行的控制流,这些控制流切扒时不必通过进程调度,通信时可以直接借助于共享的内存区,这就形成了多线积进程。
下图单线程进程和多线程进程的模型。
目前,大多数操作系统都采用多线内核模型,支持多线程(结构)进程,如:
Solaris2.x,Mach2.6,05/2,windowsNT,Chorus等。
因而,对于应用软件的开发来说,出现了另外一种设计思路,即并发多线程程序设计的方法。
合理的多线程软件结构,可以使得系统性能获得较大提高,具体表现在:
1.改进程序结构。
对许多程序来说,如果把程序分成多个独立或半独立的执行单元,而不是把程序设计成一个单一的复杂流程,将使程序有更高效的结构。
2.快速线程切换,改进程序的实时响应能力。
多个服务器程序的任务能够单独以线程的方式执行,而线程的切换可以在同一个进程内进行,不需要在应用程序中维护人为的切换界面。
客户程序也不用担心它们的请求会由于其他客户程序的请求所要时间太长而别拒绝。
3.减少(系统)管理开销,(线程)通信易于实现,节省内存空间。
4.并行程度提高。
在单个处理器上运行一个多线程进程,系统将在多个线程之间切换处理器资源,即轮流为这些线程分配时间片,也就是并发执行。
2.1课题的研究背景与意义
2.1.1课题的研究背景
以往我们开发的程序大多是单线程的,即一个程序只有一条从头至尾的执行线索。
然而现实世界中的很多过程都具有多条线索同时动作的特性。
例如,我们可以一边看电视,一边活动胳膊,如果不容许这样做,我们会感觉很难受。
再如一个网络服务器可能需要同时处理多个客户机的请求等。
Java语言的一大特性就是内置对多线程的支持。
多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。
虽然执行线程给人一种几个事件同时发生的感觉,但这只是一种错觉,因为我们的计算机在任何给定的时刻只能执行那些线程中的一个。
为了建立这些线程正在同步执行的感觉。
Java快速地把控制从一个线程切换到另一个线程。
多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。
如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的