Java多线程与线程安全实践基于Http协议的断点续传.docx
- 文档编号:755464
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:27
- 大小:289.98KB
Java多线程与线程安全实践基于Http协议的断点续传.docx
《Java多线程与线程安全实践基于Http协议的断点续传.docx》由会员分享,可在线阅读,更多相关《Java多线程与线程安全实践基于Http协议的断点续传.docx(27页珍藏版)》请在冰豆网上搜索。
Java多线程与线程安全实践基于Http协议的断点续传
Java多线程与线程安全实践——
基于Http协议的断点续传
论文作者姓名:
申请学位专业:
计算机科学与技术
申请学位类别:
工学学士
指导教师姓名(职称):
论文提交日期:
Java多线程与线程安全实践——
基于Http协议的断点续传
摘要
现实世界中的很多过程都具有多条线索同时动作的特性。
Java语言的一大特性就是内置对多线程的支持。
多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。
一些同时运行的线程需要共享数据,因此每个线程就必须要考虑其它与它一起共享数据的线程的状态与行为,这就是线程安全的问题。
为了对Java多线程与线程安全机制进行研究与实践,特此设计一个基于Http协议的支持多线程断点续传的下载程序。
此下载程序由下载任务模块、设置模块以及系统帮助模块组成。
通过ApacheJakartaCommons下的子项目HttpClient包对Http协议进行支持,从而下载服务器端的资源。
程序提供多线程断点续传功能,在完成下载过程中使用多线程技术可以较大幅度地提高下载的速度。
关键词:
多线程;线程安全;断点续传
ThePracticeofJavaMultithreadingandThreadSecurity----DownloadToolwithBroken/ResumeFunctionbasedonhttp
Abstract
Inrealworld,manyprocesseshavethecharacteristicthatmulti-stripclueactatthesametime.TheJavalanguagehasamajorcharacteristicofembeddedmultithreadsupport.Multithreadingisthestatusthatexistseveralimplementationbodyatthesametime,accordingtoseveraldifferentcluestotheimplementationofthejointwork,Itmeansthatprogrammerscaneasilyproducemorethreadsdevelopmentfunctions,Itcanalsodealwithanumberoftaskspowerfulapplication.Runningsomeofthethreadsneedtosharedata,Soeachthreadmustconsiderotherwithittosharethedatawiththestateofthethread,Thisisthethreadsafety.ToJavamultithreadingandsecuritymechanismstoconductresearchandpractice,DesignherebyHttpagreementonthesupportmultithreadingdownloadprocedures.Thisdownloadprocedurescomprisesofdownloadingtaskmodule,settingmoduleandhelpingsystemmodule.WithHttpsupportofHttpClient,asubprojectofApacheJakartaCommons,itcandownloadresourcescomingfromwebserver.TheprocedureprovidestheMulti-threadedbroken/resumefunctionality,intheprocessofcompletesdownloadingtousethemulti-threadtechnologycangreatlyboostdownloadspeed.
Keywords:
Multithreading;Threadsecurity;Broken/Resume
目录
论文总页数:
25页
1引言1
1.1课题的研究背景与意义1
1.1.1课题的研究背景1
1.1.2课题的研究意义1
1.2可行性分析2
1.2.1技术可行性2
1.2.2操作可行性2
2相关基础知识以及开发平台2
2.1JAVA中的多线程与线程安全3
2.1.1Java中的多线程3
2.1.2Java中的线程安全3
2.2Http协议简介4
2.3断点续传原理4
3需求分析5
3.1用户需求分析5
3.2业务流分析6
4.系统设计7
4.1系统设计要点7
4.2系统总体功能结构7
5.系统实现8
5.1用户界面实现8
5.2下载任务实现11
5.2.1下载任务类图11
5.2.2下载任务顺序图12
5.2.3下载任务具体实现13
5.3监控下载信息设计18
5.3.1监控下载信息类图18
5.3.2监控下载信息顺序图19
5.3.3监控下载信息实现19
结论22
参考文献23
致谢24
声明25
1引言
1.1课题的研究背景与意义
1.1.1课题的研究背景
以往我们开发的程序大多是单线程的,即一个程序只有一条从头至尾的执行线索。
然而现实世界中的很多过程都具有多条线索同时动作的特性。
例如,我们可以一边看电视,一边活动胳膊,如果不容许这样做,我们会感觉很难受。
再如一个网络服务器可能需要同时处理多个客户机的请求等。
Java语言的一大特性就是内置对多线程的支持。
多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。
虽然执行线程给人一种几个事件同时发生的感觉,但这只是一种错觉,因为我们的计算机在任何给定的时刻只能执行那些线程中的一个。
为了建立这些线程正在同步执行的感觉。
Java快速地把控制从一个线程切换到另一个线程。
多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。
如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。
自从“多线程下载”技术发明以来,这项技术得到前所未有的关注已是不争的事实。
在“网络蚂蚁”软件流行开后,许多下载软件也都纷纷效仿,是否具有“多线程下载”技术、甚至能支持多少个下载线程都成了人们评测下载软件的要素。
“多线程下载”的基础是WEB服务器支持远程的随机读取,也即支持“断点续传”。
这样,在下载时可以把文件分成若干部分,每一部分创建一个下载线程进行下载。
1.1.2课题的研究意义
多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行,由此带来的线程调度问题。
由于是多线程进行断点续传,还要考虑记录多个断点位置,且记录断点位置时也要考虑同步互斥等问题。
所有这些都使得这一步比较复杂。
但是可以明显提高网络文件的下载速度。
现在,不要说编写专门的下载软件,在自己编写的软件中,加入下载功能有时也非常必要。
如让自己的软件支持自动在线升级,或者在软件中自动下载新的数据进行数据更新,这都是很有用、而且很实用的功能。
1.2可行性分析
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。
因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括技术上的可行性和操作上的可行性。
本系统的可行性分析如下:
1.2.1技术可行性
下载程序功能模块的实现主要利用了面向对象的Java高级编程语言。
使用Java作为开发工具主要是因为Java是目前比较流行而且非常成功的编程语言。
多线程编程技术是Java语言的重要特点。
多线程编程的含义是将程序任务分成几个并行的子任务。
特别是在网络编程中,有很多功能是可以并发执行的。
Java中实现多线程的类有两种方法:
1.扩展java.lang.Thread类,用它覆盖Thread类的run方法。
2.生成实现java.lang.Runnable接口的类并将其它的实例与java.lang.Thread实例相关联。
Thread类是负责向其它类提供线程支持的最主要的类,要使用一个类具有线程功能,在Java中只要简单地从Thread类派生一个子类就可以了。
扩展Thread类,如printThread.java。
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。
Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。
由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:
synchronized方法和synchronized块。
本系统使用Eclipse的SWT图形界面技术进行开发,以HttpClient包进行支持,上述两个软件或是开发包均为免费下载,十分方便。
1.2.2操作可行性
下载程序的具备友好的用户界面,而且操作简单易于被用户接收,使用此下载程序十分方便,因为软件的操作思路比较清晰,而且用户实际操作的内容较少,所以用户只需要熟练操作计算机即可。
因此从使用操作方面看,此系统得开发是可行的。
2相关基础知识以及开发平台
2.1JAVA中的多线程与线程安全
2.1.1Java中的多线程
Java不仅是一门语言,它已成为一门技术,例如Java芯片技术、Java编译技术、基于Java的信息家电联网技术(Jini)等,并以它的平台独立性、健壮性、Java虚拟机技术等特点受到广大编程者青睐。
Java能把所有东西从桌面计算机平稳地转换成基于网络的计算,它是Web浏览器中必须具备的技术,是一个完全面向对象的语言,是有利于处理网络协议的程序综合库。
线程是从一个完整应用程序分出的单独的处理步骤,是程序内部的一个顺序控制流。
一个小程序中可含1个或多个线程并可同时运行,由于单线程一旦运行就独占线程的所有时间资源,而多线程的出发点就是提高系统的并发性,因此,引人注意的不是一个单独的线程,而是在一个程序中实现多个线程,它意味着一个程序的多行语句同时执行,即用抢占资源的方式对多个线程实现轮流执行。
例如HotJava浏览器就是一个多线程的应用实例。
在Java语言中,多线程编程已成为编程的一个有效工具,可编制出界面友好、效率高的应用程序。
Java内在支持多线程,其线程由3部分组成:
(1)虚拟CPU,封装在Java.lang.Thread类中。
(2)CPU所执行的代码,传送给Thre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 多线程 线程 安全 实践 基于 Http 协议 断点续传