电气工程
会计论文
金融论文
国际贸易
财务管理
人力资源
学前教育
德语论文
工程管理
文化产业
机械设计
汉语文学
英语论文
物流论文
电子商务
法律论文
工商管理
旅游管理
市场营销
药学论文
制药工程
生物工程
包装工程
模具设计
测控专业
工业工程
教育管理
行政管理
计算机论
电子信息
体育教育
小学教育
印刷工程
土木工程
书法论文
护理论文
心理学论
信息管理
公共事业
给水排水
范文首页
|
毕业论文
|
论文范文
|
计算机论文
|
外文翻译
|
工作总结
|
工作计划
|
现成论文
|
论文下载
|
教学设计
|
免费论文
|
原创论文
|
全站搜索
搜索
高级搜索
当前位置:
论文同学网:毕业论文范文网-论文范文
->
免费论文
->
计算机论文
web应用服务器(七)
作者: 浏览:
27
次
免费专业论文
政治工作论文
计算机论文
营销专业论文
工程管理论文范文
医药医学论文范文
法律论文范文
生物专业论文
物理教学论文范文
人力资源论文范文
化学教学论文范文
电子专业论文范文
历史专业论文
电气工程论文
社会学专业论文
英语专业论文
行政管理论文范文
语文专业论文
电子商务论文范文
焊工钳工技师论文
社科文学论文
教育论文范文
数学论文范文
物流论文范文
建筑专业论文
食品专业论文
财务管理论文范文
工商管理论文范文
会计专业论文范文
专业论文格式
化工材料专业论文
英语教学专业论文
电子通信论文范文
旅游管理论文范文
环境科学专业论文
经济论文
人力资源论文范文
营销专业论文范文
财务管理论文范文
物流论文范文
财务会计论文范文
数学教育论文范文
数学与应用数学论文
电子商务论文范文
法律专业论文范文
工商管理论文范文
汉语言文学论文
计算机专业论文
教育管理论文范文
现代教育技术论文
小学教育论文范文
机械模具专业论文
报告,总结,申请书
心理学论文范文
学前教育论文范文
收费计算机专业论文
Delphi
ASP
VB
JSP
ASP.NET
VB.NET
java
VC
pb
VS
dreamweaver
c#.net
vf
VC++
计算机论文
毕业论文范文题目:
web应用服务器(七)
,论文范文关键词:
web应用服务器(七)
web应用服务器(七)毕业论文范文介绍开始:
Web服务器应用程序常常要处理来自远程的大量而短小的任务,其特点是单个任务处理的时间很短而请求的数目却很大且很多请求是同时进行的。
显然单线程的处理机制无法满足我们的需求。在服务器程序中,使用多线程是提高服务器性能的捷径。实践证明,采用多线程设计可以极大地改善系统的响应性能,提高程序的并行性。
多线程,顾名思义就是在应用程序中使用多个线程。在服务器应用程序中
使用多线程的意思是对于接收的每一个请求我们使用一个单独的线程进行处理。构建多线程应用程序时,一个简单的方法是:每当一个请求到达时就创建一个新线程,然后在新建的这个线程中对该请求进行处理。实际应用中,这种方法的缺点是很明显的:为每个请求创建一个新线程的开销是很大的;创建过多的线程可能会导致系统由于内存消耗过度而导致系统资源不足。
资源不足是多线程应用中需要注意的一个问题。为了防止资源不足,服务器应对创建和销毁线程的次数进行合理的调整,尽量重用已有的线程。
池化技术被广泛的应用于服务器端软件的开发上。池化技术简单来说就是对已创建的对象放在一个池中进行缓存,将来需要某对象时,就从池中获取,从而达到重用对象的目的。线程池技术是池化技术的一种,当需要完成某项任务时,直接从线程池中取出线程来对任务进行处理,任务处理完后,将线程返回线程池,其优点是:任务到达时,由于不需要新建线程,而是直接使用已有线程,提高了应用程序的响应速度。而且,通过适当地调整线程池中的最大线程数目和最小线程数目,可以防止系统资源不足问题。
3.1.2.1实现
在DM WAS中我们使用了多线程机制,对于单个的请求都交给线程池模块进行处理。我们使用事件驱动处理的方法实现线程之间的调度。在事件驱动处理的情况下,需要一种发信机制来控制某一特定线程何时应该运行。在Java中,可以使用wait()、notify()和notifyAll()方法向线程发送信号。这些方法允许线程在一个对象上阻塞,直到所需的条件得到满足为止,然后再次开始运行。这种设计减少了CPU占用,因为线程在阻塞时不消耗执行时间,并且可在notify()方法被调用时立即唤醒。与其它方法相比,事件驱动方法可以提供更短的响应时间。
线程池模块包括线程池、工作线程、任务队列、任务接口等几个部分。
class ThreadPool implements LifeCycle{
void initPool();//初始化线程池
void createWorker();//创建工作线程
void execute(Task task);//执行指定任务/*将工作线程返回到池中*/
void returnWorker(WorkerThread worker);/*通知线程池该任务发生异常,从而线程池可以结束该任务并回收该任务所占用的工作线程*/
void errorOccur(Task task);
}
ThreadPool代表线程池,其作用是创建、销毁并管理线程,将工作线程放入线程池中,调用工作线程执行任务,销毁异常任务。
class WorkerThread implements Runnable{
void run();//运行工作线程
boolean overtime();//线程是否超时
}
WorkerThread代表一个工作线程,它是一个独立的可以循环执行任务的线程对象,在没有任务时进行等待(wait),在任务到达时被唤醒(notify)执行。
class TaskQueue{
void pushTask(Task task);//将任务放入任务队列的队尾
Task popTask();//从任务队列的队头取出任务执//行并从队列中删除该任务
void RemoveTask(Task task);//从任务队列中移走任务
}
TaskQueue代表一个任务队列,其作用是提供一种缓冲机制,将没有处理的任务放在任务队列中,等到有工作线程可用时依次执行队列中的任务。
interface Task{
void start();//任务开始执行
void reject();//丢弃该任务
}
Task是一个接口,它是每个任务必须实现的接口,线程池只执行实现了该接口的类,它提供一组方法用来规定执行任务的入口、任务的执行状态、任务执行完后的收尾工作等,从而保证线程逻辑和应用逻辑的分离,工作线程通过该接口调度任务的执行。
3.1.2.2流程图
线程池处理任务的过程如图3.2所示。
3.2.2.3存在的问题
线程池为我们构建多线程的服务器应用程序提供了强大的机制,但使用它可能会出现一些问题。
1.资源不足问题
这里的资源包括线程自身所使用的资源、线程处理任务时可能需要的其它资源,例如数据库连接、Socket套接字或文件输入输出流等。资源不足问题的本质原因就是过多创建线程从而消耗包括内存和其它系统资源在内的大量资源。
为解决资源不足问题,我们在线程池中提供了几个参数供用户根据实际情况优化线程池。
(1)maxThreads:线程池中最大线程数,默认为无限大。通常我们期望
maxThreads应该是服务器能够接受的最大并发访问数。如果有多于maxThreads的并发请求,多余的请求将被任务队列进行缓存。
图3.2线程池处理任务的流程图
(2)minTreads:线程池中最小线程数,默认为1。服务器启动时,会初始化值为minTreads的线程数。
(3)maxQueueCount:任务队列中能够缓存的最大请求数,默认为10。当任务队列已满时,多余的请求将被服务器拒绝。
(4)keepAliveTime:线程池中空闲线程能够保持的最大时间,默认为-1(表示永不过期)。KeepAliveTime保证了当并发访问数较低时,一些空闲的线程能够被服务器终止,从而被垃圾回收器回收。
2.线程泄漏问题
线程池中可能出现的另一个问题是线程泄漏问题。所谓线程泄漏,是指当从线程池中取出一个线程以执行一项任务,而在任务完成后该线程却没有返回池中。一个任务在长时间运行后不可避免会产生一些诸如连接超时或中断的情况,从而抛出一个运行时的异常或错误。如果线程池没有捕捉到它们,那么这样的线程就会直接退出,从而线程池中线程的数目将会永久减少一个。当这种情况发生的次数越来越多时,线程池最终就会为空,从而服务器无法为后续请求提供服务,因为池中已经没有可用的线程来处理任务。
对于线程泄漏问题,我们在工作线程中监视任务对象的运行状况,如果发生错误,通过errorOccur()方法通知线程池进行相应的处理,从而保证所有的工作线程运行正常。
3.2 JSP引擎
JSP给开发者提供了两个重要的能力:(1)它提供了访问远程数据的机制如EJB、JDBC、远程方法调用(Remote Method Invocation,RMI);(2)它让开发者从表现中封装和分离程序逻辑而达到最大程度的代码重用和灵活性。逻辑与表现的分离是它超越其它Web应用结构的一个主要优势。
JSP引擎主要功能是处理JSP文件。当Servlet容器发现用户请求的是一个JSP页面时,它将该请求交给JSP引擎进行处理。因此,可以说在响应请求的过程中JSP引擎是由Servlet容器调用的。我们将JSP引擎的入口程序设计成一个Servlet,该Servlet是JSP引擎的主导程序,包括对JSP引擎的初始化以及调用其它相关类对JSP页面进行处理。
JSP引擎处理JSP文件包括三个大的步骤:
(1)判断该JSP文件对应的Servlet实例是否存在并有效,如果条件满足,直接返回原实例,否则,进行下一步,该过程称为JSP的预处理;
(2)解析JSP文件生成Java文件;
(3)将Java文件编译成Java类,生成的Java文件必须实现
javax.servlet.jsp.HttpJspPage接口,HttpJspPage继承自Servlet接口,因此最终生成的Java类实际上就是一个Servlet。
上述过程如图3.3所示。
图3.3 JSP引擎处理JSP的过程
首页
上一页
4
5
6
7
8
9
下一页
尾页
7
/9/9
以上为本篇毕业论文范文
web应用服务器(七)
的介绍部分。
本论文在
计算机论文
栏目,由
论文网
(www.zjwd.net)整理,更多论文,请点
论文范文
查找
相关论文
收费专业论文
汉语言文学论文
物理学论文
自动化专业论文
测控技术专业论文
历史学专业论文
机械模具专业论文
金融专业论文
电子通信专业论文
材料科学专业论文
英语专业论文
会计专业论文
行政管理专业论文
财务管理专业论文
电子商务国贸专业
法律专业论文
教育技术学专业论文
物流专业论文
人力资源专业论文
生物工程专业论文
市场营销专业论文
土木工程专业论文
化学工程专业论文
文化产业管理论文
工商管理专业论文
护理专业论文
数学教育专业论文
数学与应用数学专业
心理学专业论文
信息管理专业论文
工程管理专业论文
工业工程专业论文
制药工程专业论文
电子机电信息论文
现代教育技术专业
新闻专业论文
艺术设计专业论文
采矿专业论文
环境工程专业论文
西班牙语专业论文
热能与动力设计论文
工程力学专业论文
酒店管理专业论文
安全管理专业论文
交通工程专业论文
体育教育专业论文
教育管理专业论文
日语专业论文
德语专业论文
理工科专业论文
轻化工程专业论文
社会工作专业论文
乡镇企业管理
给水排水专业
服装设计专业论文
电视制片管理专业
旅游管理专业论文
物业管理专业论文
信息管理专业论文
包装工程专业论文
印刷工程专业论文
动画专业论文
环境艺术专业论文
信息计算科学专业
物流专业论文范文
人力资源论文范文
营销专业论文范文
工商管理论文范文
汉语言文学论文范文
法律专业论文范文
教育管理论文范文
小学教育论文范文
学前教育论文范文
财务会计论文范文
电子商务论文范文
上一篇
:
基于JAVA的酒店管理系统设计与实现
下一篇
:
数据库设计教材管理系统
最新论文
精品推荐
热门论文