嗨,我是 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/