当前位置: 首页 > 面试题库 >

多线程在Web应用程序中的作用

田鸿彩
2023-03-14
问题内容

自两年以来,我一直在使用java(Servlets,JSPs)进行Web应用程序开发。在那两年中,我从不需要multithreading在任何项目中使用(明确地-
众所周知,servlet容器使用线程为不同的请求提供相同的servlet)。

但是,每当我参加Web开发人员职位(java)的面试时,就会有几个与java中的线程相关的问题。我知道Java线程的基础知识,因此回答问题不是问题。但是有时我会感到困惑,是否在不使用mutithreading开发Web应用程序时丢失了某些东西?

所以我的问题是multithreadingWeb应用程序中的角色是什么?multithreading可以在Web应用程序中使用的任何示例将不胜感激。

提前致谢。


问题答案:

主要在您对异步调用感兴趣时,才可以在Web Apps中使用多线程。

例如,考虑一下您有一个Web应用程序,该应用程序可以激活GSM网络上的用户状态(例如,激活4G计划)并在最后发送确认短信或电子邮件。

知道Web调用将花费几分钟,尤其是在GSM网络压力很大的情况下,直接从Web线程调用它是没有意义的。

因此,基本上,当用户单击“激活”时,服务器将返回类似“感谢激活4G计划。您的计划将在几分钟内被激活,并且您会收到确认的SMS /电子邮件”。

在这种情况下,您的服务器必须以异步方式生成一个新线程,最好使用线程池,然后立即将响应返回给用户。

工作流程:

1-用户单击“激活”按钮
2- Servlet接收请求并在线程池中激活新的“激活4G计划”任务。
3- Servlet立即向用户返回HTML响应,而无需等待任务完成。
4- Http事务结束
。。。

异步地,稍后启动4G计划,并通过SMS或电子邮件等方式通知用户…



 类似资料:
  • 问题内容: 在多线程应用程序中如何使用Hibernate(例如,每个客户端连接在服务器上启动它自己的线程)。 EntityManager应该仅由EntityManagerFactory创建一次,例如: 还是我必须为每个线程以及关闭EM的每个事务重新创建实体? 我的CRUD方法如下所示: 我要不要每次都跑?还是因为每个人都使用自己的缓存创建自己的EntityManager实例而使我陷入麻烦了? 问题

  • 问题内容: 场景:我们有一个在Websphere中运行的Spring托管的Web应用程序。(Spring 3.0.x,WAS 7)Webapp通过Spring的Web应用程序利用Websphere的工作管理器(配置为10的线程池)以执行计算密集型db读取操作。因此,基本上,有一个请求来生成10个不同的文件。要生成文档,只需db读取即可收集/处理数据。因此,我们基本上产生了10个线程来处理10个文档

  • 我正在Clojure中使用luminus和Ring构建一个web应用程序。我使用lein uberjar构建我的应用程序,然后用undertow服务器构建它。 我的问题是,什么时候对应用程序的请求在单独的非阻塞线程中运行? 我通过对执行的页面执行请求来测试应用程序的并发性。如果我同时在Chrome中的两个选项卡中访问此页面,第二个选项卡将在第一个选项卡加载后大约20秒内才加载。因此,这两次访问似乎

  • 问题内容: 我将python解释器嵌入到多线程C应用程序中,对于应该使用哪些API来确保线程安全,我有些困惑。 从我收集到的信息来看,嵌入python时,在调用任何其他Python C API调用之前,由嵌入器负责GIL锁定。这是通过以下功能完成的: 但是,仅此一项似乎还不够。我仍然遇到随机崩溃,因为它似乎并未为Python API提供互斥。 阅读更多文档后,我还添加了: 在致电之后,但这就是令人

  • 问题内容: 我正在尝试将Hibernate用于多线程应用程序,其中每个线程都检索一个对象并将其插入表中。我的代码如下所示。我每个线程都有本地hibernate会话对象,在每个InsertData中,我都执行beginTransaction和commit。 我面临的问题是很多次我收到“ org.hibernate.TransactionException:不支持嵌套事务” 由于我是hibernate

  • 问题内容: 是否有一种实际的方法可以在PHP中实现多线程模型,无论是真正的还是仅对其进行仿真。一段时间以前,建议您可以强制操作系统加载PHP可执行文件的另一个实例并处理其他同时进行的进程。 这样做的问题是,当PHP代码完成执行PHP实例后,它仍保留在内存中,因为无法从PHP中杀死它。因此,如果您正在模拟多个线程,则可以想象会发生什么。因此,我仍在寻找一种可以在PHP中有效完成或模拟多线程的方法。有