问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

[转]几种开源Java Web容器线程池的实现方法简介—Tomcat(一)

发布网友 发布时间:2022-05-11 07:06

我来回答

1个回答

热心网友 时间:2023-10-07 00:11

其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的。可以分别从他们的网站上下载最新的二进制包和源代码。
作为Web容器,需要承受较高的访问量,能够同时响应不同用户的请求,能够在恶劣环境下保持较高的稳定性和健壮性。在HTTP服务器领域,ApacheHTTPD的效率是最高的,也是最为稳定的,但它只能处理静态页面的请求,如果需要支持动态页面请求,则必须安装相应的插件,比如mod_perl可以处理Perl脚本,mod_python可以处理Python脚本。
上面介绍的三中Web容器,都是使用Java编写的HTTP服务器,当然他们都可以嵌到Apache中使用,也可以独立使用。分析它们处理客户请求的方法有助于了解Java多线程和线程池的实现方法,为设计强大的多线程服务器打好基础。
Tomcat是使用最广的Java Web容器,功能强大,可扩展性强。最新版本的Tomcat(5.5.17)为了提高响应速度和效率,使用了Apache Portable Runtime(APR)作为最底层,使用了APR中包含Socket、缓冲池等多种技术,性能也提高了。APR也是Apache HTTPD的最底层。可想而知,同属于ASF(Apache Software Foundation)中的成员,互补互用的情况还是很多的,虽然使用了不同的开发语言。
Tomcat 的线程池位于tomcat-util.jar文件中,包含了两种线程池方案。方案一:使用APR的Pool技术,使用了JNI;方案二:使用Java实现的ThreadPool。这里介绍的是第二种。如果想了解APR的Pool技术,可以查看APR的源代码。
ThreadPool默认创建了5个线程,保存在一个200维的线程数组中,创建时就启动了这些线程,当然在没有请求时,它们都处理等待状态(其实就是一个while循环,不停的等待notify)。如果有请求时,空闲线程会被唤醒执行用户的请求。
具体的请求过程是:服务启动时,创建一个一维线程数组(maxThread=200个),并创建空闲线程(minSpareThreads=5个)随时等待用户请求。当有用户请求时,调用 threadpool.runIt(ThreadPoolRunnable)方法,将一个需要执行的实例传给ThreadPool中。其中用户需要执行的实例必须实现ThreadPoolRunnable接口。 ThreadPool首先查找空闲的线程,如果有则用它运行要执行ThreadPoolRunnable;如果没有空闲线程并且没有超过 maxThreads,就一次性创建minSpareThreads个空闲线程;如果已经超过了maxThreads了,就等待空闲线程了。总之,要找到空闲的线程,以便用它执行实例。找到后,将该线程从线程数组中移走。接着唤醒已经找到的空闲线程,用它运行执行实例(ThreadPoolRunnable)。运行完ThreadPoolRunnable后,就将该线程重新放到线程数组中,作为空闲线程供后续使用。
由此可以看出,Tomcat的线程池实现是比较简单的,ThreadPool.java也只有840行代码。用一个一维数组保存空闲的线程,每次以一个较小步伐(5个)创建空闲线程并放到线程池中。使用时从数组中移走空闲的线程,用完后,再归还给线程池。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑docx怎么转换成word文档电脑上docx格式文件转换方法 电脑白屏是怎么回事啊。??? 电脑开机花屏渐渐地白屏了显示器突然白屏花屏的原因及解决方法_百度知 ... iphone录屏失败因为5823什么意思_iphone录屏失败提示5823代表什么意思... 软考中级:信息安全工程师 求大神解答打印机如何设置默认双面打印 如何更改打印机的打印格式? 经期同房月经没了会怀孕吗 iphone8p轻触解锁设置 宝沃bx5300公里多少油钱 java的线程池是什么,具体有什么用处 什么是java线程池? 朋友梦见自己当老板娘带起员工出门办货 梦见别人做领导,自己做小兵? 现在买电视机主要看什么? 智能电视要怎么选主要看哪些方面? 雄海马能产子,雌海马是干什么的ˉ ˉ‖‖ 海南马自达跟海马汽车有什么区别,是同一个品牌么 海马汽车是家用车还是商用车? 一汽海马和一汽马自达的区别? 请学霸告诉谢谢 景柱披肩挂帅,海马第四次创业成功了吗? 马自达和海马是一回事么? 请简要概括小海马,鸭嘴兽,皱唇鲨的繁殖特点? 小海马是怎样出生的? 如何定义雌雄? 海马是雌性生孩子还是雄性生孩子,为什么? 快手提现微信怎么更改 快手极速版怎么换个提现 深夜的英文意思是什么? 新款花样毛衣编织2360的作品目录 那个带着帽子的老奶奶是我的祖母用英语怎么说? 我的祖母和她的外祖母是姐妹,我和她是否可以结婚 “她是谁?我的祖母!”这是一句什么句。(填修辞手法) 我的祖母出生于20世纪50年代英语 我的奶奶 英语作文 而这是我的祖母,她的名字叫Mona用英语怎么说? 我祖母的祖母是俄罗斯人,哪么我是否有俄罗斯人的血统呢? 我的小脚祖母是谁? 雪莲果可以和中药一起吃吗? 肾阴虚能吃雪莲吗? 吃了雪莲果便秘严重 复发性口腔溃疡可以吃雪莲果吗? 乳腺结节吃雪莲果好吗 女性是不是一般过了35岁之后,就要经常性的热敷肚子?对身体有好处? 三个女闺蜜的动漫头像三个人一人一张,还有QQ名三个的,要好看,好听,多弄点哦 沙发背景墙实木线条中间用一个什么字比较好? 住宅电视背景墙加什么字好? 行善之人的背景墙写什么字好 武汉大学山东录取分数线2021是多少