【问题标题】:how to use Servlet in multithread environment如何在多线程环境中使用 Servlet
【发布时间】:2014-05-31 06:55:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: java multithreading jsp sockets servlets


    【解决方案1】:

    这是自动的。 servlet 容器为您处理多线程。您只需编写和部署一个 webapp,容器会同时处理对这个 webapp 的并发请求。

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多