栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

tomcat是否为每个用户创建一个线程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tomcat是否为每个用户创建一个线程?

每个 请求
都在不同的线程中处理。这不是“每个用户的线程”。请求是客户端(Web浏览器)和服务器之间的任何交互。因此,在浏览器中键入一个Url并调用ajax请求,每个请求都在单独的线程中处理。

用户在“登录”过程中获得的状态(本身不必是登录;一种更好的说法是“一个用户的一组相关请求”)可以方便地存储在会话中。您可以使用该会话存储适用于该用户的任何数据,尽管您应注意不要存储太多数据,因为它会占用内存。会话管理需要一定程度的技能。

是的,如果要启动新线程,则必须非常小心;您可以破坏事物,通常这是一个坏主意。如果必须执行需要很长时间的操作,请使用JMS异步处理它。还要记住,并非所有影响Web应用程序数据的任务都必须从Webapp调用。每天扫描数据的任务可以作为单独的任务运行在tomcat之中或之外,例如,您可以使用诸如石英调度程序之类的东西来编写作业,甚至可以编写单独的程序并将其设置为在cron中运行(例如不过,请小心从Web应用程序下更改数据的工作)。

如果您使用的是Spring和Hibernate之类的最佳技术,它们通常会将程序员将需要的对象(或可由应用程序开发人员配置)绑定到每个线程(使用Java的ThreadLocal)。

这也是启动自己的线程很危险的原因之一。如果启动自己的线程,则在请求结束时可能会丢失绑定到初始线程的资源,这意味着,如果您尝试在工作线程中访问这些资源,则这些资源将不可用。这种类型的错误可能会让人难以找到/修复。

编辑-正如Stephen
C在评论中指出的另一个答案,重要的是要注意,通常Tomcat(和其他容器)维护着一个线程池供使用。这意味着不必为每个请求都创建一个新线程。这意味着每个请求都在单独的线程中
运行 ,该线程可能会或可能不会创建或重用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号