图2.2 Swing组件体系结构图
创建图形界面的步骤:
导入Swing包
选择界面风格
设置顶层容器
设置按钮和标签
将组件放到容器上
为组件增加边框
处理事件、辅助技术支持
2.3 线程和多线程
2.3.1 线程的基本概念
线程(thread)是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。
线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是程序本身。
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
2.3.2 多线程的优点
CPU是以时间片的方式为进程分配CPU处理时间的,当一个进程以同步的方式去完成几件事情时,此进程必须完成了第一件事情以后再做第二件事,如此按顺序地向CPU请求完成要做的事情。在此单线程的工作模式下,如果把CPU看作是一共有100个时间片的话,CPU可能一直都只是花了其中的10个时间片来处理当前进程所要做的事情,只是用到了CPU的10%的时间片,而其他时间都白白浪费了,当然,实际上CPU的工作模式还是做完一件事以后再去做另一件事,只是CPU的处理速度非常快,很快就处理完成所请求的情事。
采用多线程可以很明显的提高CPU的利用率。如当前进程要完成三件事情1、2、3,那么CPU会分别用10%的时间来同时处理这3件事情,从而让CPU的使用率达到了30%,大大地提高了CPU的利用率。多线程在处理一些特殊的场合其优势更加明显(如下载器)。
2.3.3 Java线程的实现
Java线程的实现一般有两种方式:第一种是继承Thread类;第二种是实现Runnable接口。
第三章 系统分析与设计
3.1 功能需求
由于丰富的网络资源,现在的用户下载需求量也越来越大,同时对下载软件处理资源速度的要求也越来越高。而多线程程序设计可以很好的解决程序并发的问题。在下载软件中应用多线程技术可以理解为将一个下载任务分成若干份来完成,其中的并发控制将使下载的效率大大提高。
由于下载资源的时间长短不一,可能很短也可能比较长。如果在一段很长的下载时间段中出现了意外情况,比如电源意外被切断、网络中断、或是操作系统故障导致系统重新启动。这些原因都会导致下载的 中断,但是当用户重新下载资源时发现原来下载的数据已经消失你还是要回头再来。断点续传就很好的解决了这样的问题,它的任务是在下载任务停止时,记录当前下载的信息并且利用网络协议中的一些重定向机制继续完成下载任务而不必从头再来。
简单来说可以将需求整理为如下:
可视化界面;
支持多线程下载;
支持断点续传;
3.2 系统功能模块的划分
系统主要包含如下几个类:
MainFrame:负责定义可视化界面,定义主界面的监听事件。
DownTableModel:继承AbstractTableModel类,此类对象用于处理表格。
GlobalData:用于保存全局数据。
NewDownload:创建新建下载的页面,定义新建下载页面的监听事件。
Download:做下载前的准备,包括连接资源,实现多线程,分配每个线程的下载量。
DownloadThread:实现下载,并进行数据流的I/O操作。
上一篇:
计算机软件技术专业本科毕业设计(论文)模板(word文档)
下一篇:
浅议发展中的房地产网络营销