嗨,我刚接触servlet,我想在多线程环境中编写一个servlet代码(我的意思是每个请求都会生成一个新服务类来提供特定请求) 我不知道它是否是一个很好的servlet编程方法,我发现在HERE编写线程安全Servlet的一些技术考虑但是我不喜欢它(因为我之前说过,我想最好有一个单独的线程为每个为特定客户端提供服务的servlet。)
我使用套接字编写了类似的代码。在这种情况下,我使用套接字连接作为参数发送到每个服务线程(这是下面的代码),但在Servlet案例中我不知道用什么来识别客户端(分配cookie,使用会话ID ...)?
clientSocket = serverSocket.accept();
Service serv=new Service(clientSocket);
(new Thread(serv)).start();
答案 0 :(得分:3)
这是自动的。 servlet容器为您处理多线程。您只需编写和部署Web应用程序,并且该容器将同时提供对此Web应用程序的并发请求。
因此,例如,如果两个请求同时到达服务器,容器会将这两个请求的hendling分配给其线程池的2个线程,并且这两个线程将同时调用您的servlet。 / p>
所有你必须关心的是让你的servlet代码线程安全。最好的方法是让它无状态:不要在servlet中使用任何实例变量,除了在init()方法中初始化的变量,以及之后从未修改的变量。