多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行,由此带来的线程调度问题。由于是多线程进行断点续传,还要考虑记录多个断点位置,且记录断点位置时也要考虑同步互斥等问题。所有这些都使得这一步比较复杂。但是可以明显提高网络文件的下载速度。
现在,不要说编写专门的下载软件,在自己编写的软件中,加入下载功能有时也非常必要。如让自己的软件支持自动在线升级,或者在软件中自动下载新的数据进行数据更新,这都是很有用、而且很实用的功能。
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括技术上的可行性和操作上的可行性。本系统的可行性分析如下:
下载程序功能模块的实现主要利用了面向对象的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包进行支持,上述两个软件或是开发包均为免费下载,十分方便。