Java多线程与线程安全实践-基于Http协议的断点续传
来源:56doc.com 资料编号:5D855 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9A5D855
资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用. 密 保 惠 帮助
资料介绍
摘 要 现实世界中的很多过程都具有多条线索同时动作的特性。Java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。一些同时运行的线程需要共享数据,因此每个线程就必须要考虑其它与它一起共享数据的线程的状态与行为,这就是线程安全的问题。为了对JAVA多线程与线程安全机制进行研究与实践,特此设计一个基于Http 协议的支持多线程断点续传的下载程序。此下载程序由下载任务模块、设置模块以及系统帮助模块组成。通过Apache Jakarta Commons下的子项目HttpClient包对Http协议进行支持,从而下载服务器端的资源。程序提供多线程断点续传功能,在完成下载过程中使用多线程技术可以较大幅度地提高下载的速度。(所有权: 毕业设计网 QQ:306826066)
关键词:多线程;线程安全;断点续传
The Practice of JAVA Multithreading and Thread Security---- Download Tool with Broken/Resume Function based on http Abstract In real world, many processes have the characteristic that multi-strip clue act at the same time. The Java language has a major characteristic of embedded multithread support. Multithreading is the status that exist several implementation body at the same time, according to several different clues to the implementation of the joint work, It means that programmers can easily produce more threads development functions, It can also deal with a number of tasks powerful application. Running some of the threads need to share data, So each thread must consider other with it to share the data with the state of the thread, This is the thread safety. To JAVA multithreading and security mechanisms to conduct research and practice, Design hereby Http agreement on the support multithreading download procedures. This download procedures comprises of downloading task module, setting module and helping system module. With Http support of HttpClient, a subproject of Apache Jakarta Commons, it can download resources coming from web server. The procedure provides the Multi-threaded broken/resume functionality, in the process of completes downloading to use the multi-thread technology can greatly boost download speed.
Keywords: Multithreading; Thread security; Broken/Resume
以往我们开发的程序大多是单线程的,即一个程序只有一条从头至尾的执行线索。然而现实世界中的很多过程都具有多条线索同时动作的特性。例如,我们可以一边看电视,一边活动胳膊,如果不容许这样做,我们会感觉很难受。再如一个网络服务器可能需要同时处理多个客户机的请求等。 Java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。虽然执行线程给人一种几个事件同时发生的感觉,但这只是一种错觉,因为我们的计算机在任何给定的时刻只能执行那些线程中的一个。为了建立这些线程正在同步执行的感觉。JAVA快速地把控制从一个线程切换到另一个线程。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。 自从“多线程下载”技术发明以来,这项技术得到前所未有的关注已是不争的事实。在“网络蚂蚁”软件流行开后,许多下载软件也都纷纷效仿,是否具有“多线程下载”技术、甚至能支持多少个下载线程都成了人们评测下载软件的要素。“多线程下载”的基础是WEB服务器支持远程的随机读取,也即支持“断点续
研究意义 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行,由此带来的线程调度问题。由于是多线程进行断点续传,还要考虑记录多个断点位置,且记录断点位置时也要考虑同步互斥等问题。所有这些都使得这一步比较复杂。但是可以明显提高网络文件的下载速度。 现在,不要说编写专门的下载软件,在自己编写的软件中,加入下载功能有时也非常必要。如让自己的软件支持自动在线升级,或者在软件中自动下载新的数据进行数据更新,这都是很有用、而且很实用的功能。 系统设计要点 随着用户下载需求的增大,用户下载的资源越来越大,下载的过程也就越来越久,这就要求下载软件能够迅速完成对资源的下载,为了提高下载效率的问题,所以本系统采用多线程的方式来实现下载速率的提高。多线程的优点之一是所有线程都可以访问相同的全局变量和共享资源,它提供了程序设计的简捷性与便利性,提高了对信息处理的并发度,但也带来了数据的讹误或线程得不到某一资源而被饿死(即死锁)的可能性。为了避免这些现象的产生,线程在使用共享资源或对象前必须获得一个约束访问同步对象的权力,也就是通过同步的机制来控制这种权力的使用,这就是线程的安全问题。Http协议是互联网中一个非常重要而且应用十分频繁的协议,所以本系统的设计是基于 Http协议的。长期以来,断点续传始终是困扰网虫们的一大难题,眼看着已经下载到99%的软件,却由于突然掉线而前功尽弃的那种沮丧恐怕人人都经历过,于是本系统采用断点续传的方式来设计。 本系统设计的基本目标就是利用编写一个时下流行的基于Http协议的多线程断点续传的程序来研究JAVA多线程与线程安全的机制。
系统总体功能结构 通过对多线程断点续传下载软件的需求分析并结合实际情况的分析,本系统由下载分类管理、任务管理、设置管理、系统帮助四个主模块构成。本系统的功能结构图如图示: 其中下载文件的分类模块主要是通过在新建下载任务时候设置下载文件的存储目录甚至新建一个存储目录的方式来实现。 下载任务的管理模块主要有三个子模块组成:新建下载任务模块、批量完成下载任务模块、删除任务模块。 在设置任务的管理模块主要有两个子模块组成:在新建(批量)下载任务的时候进行任务的连接方面的配置模块以及在现在过程中对下载任务的状态进行监视的模块。 在系统帮助模块里主要是包含一些对整个系统的说明,便于用户理解。 另外系统还支持将资源下载URL地址自动添加到剪贴板中,这样用户只需要点击地址即可开始下载,而不是需要手动粘贴、复制URL地址到指定位置。(所有权: 毕业设计网 QQ:306826066)
目 录
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.1 JAVA中的多线程与线程安全 3 2.1.1 JAVA中的多线程 3 2.1.2 JAVA中的线程安全 3 (所有权: 毕业设计网 QQ:306826066) 2.2 Http协议简介 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
|