java - 如何在多线程环境下使用Servlet

标签 java multithreading jsp sockets servlets

嗨,我是 Servlet 新手,我想在多线程环境中编写 Servlet 代码(我的意思是,对于每个请求,都会生成一个新的服务类来服务该特定请求) 我不知道这在servlet编程中是否是一个好方法,我在HERE中找到了一些编写线程安全Servlet的技术注意事项但我不喜欢它(因为正如我之前所说,我想最好为每个服务特定客户端的 servlet 有一个单独的线程)。

我使用套接字编写了类似的代码。在这种情况下,我使用套接字连接作为参数发送到每个服务线程(下面是代码),但在 Servlet 情况下,我不知道使用什么来识别客户端(分配 cookie、使用 session id ...)?

                clientSocket = serverSocket.accept();
                Service serv=new Service(clientSocket);
                (new Thread(serv)).start();

最佳答案

这是自动的。 Servlet 容器会为您处理多线程。您只需编写并部署一个 Web 应用程序,对该 Web 应用程序的并发请求将由容器同时提供服务。

例如,如果两个请求同时到达服务器,容器会将这两个请求分配给其线程池的 2 个线程来处理,并且您的 servlet 将由这两个线程并发调用。

您所需要关心的就是使您的 servlet 代码线程安全。最好的方法是让它无状态:不要在 servlet 中使用任何实例变量,除了在 init() 方法中初始化且之后不再修改的变量。

关于java - 如何在多线程环境下使用Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967323/

相关文章:

eclipse - 让 Eclipse 自动重新加载我的 Java Web 应用程序中的 JSP 页面

javascript - 使不可编辑的列对于新添加的行可编辑

java - 如何使用 Maven 在 NetBeans 11 中添加本地 .jar 依赖项?

java - 如何在 Spring Boot 中使用 DynamoDB 实现审计?

java - 如何在 Spring Boot 应用程序中配置自定义数据库连接超时?

c - 如何在 OS X 上编译 OpenMP 和 MPI 混合 C 程序

java - 使用 JNI、多线程从 Fortran 调用 Java

java - Maven 父子关系

java - Atomic Integer incrementAndGet() 线程安全吗?

java - Struts2应用程序中出现404错误