Java 使用线程处理请求

Java 使用线程处理请求,java,jsp,Java,Jsp,我正在使用JSP和Jdbc编写一个应用程序,其中我有一个表名“COMMENT\u DATA”,用户可以在其中发布他们对该表的评论。所以现在如果不止一个用户同时写评论和发布,我会选择线程。因此,我将同步将数据插入数据库的方法。然后,如何处理其他请求,即如何将其他请求排队,以及如何收回并将它们写入数据库我不确定您为什么需要担心这个问题。servlet容器将处理线程(例如,通过线程池)。数据库将处理多个连接,因此如果您不在应用程序中修改不同线程之间的共享状态,则不必担心这一点。我不确定您为什么需要担心

我正在使用JSP和Jdbc编写一个应用程序,其中我有一个表名“COMMENT\u DATA”,用户可以在其中发布他们对该表的评论。所以现在如果不止一个用户同时写评论和发布,我会选择线程。因此,我将同步将数据插入数据库的方法。然后,如何处理其他请求,即如何将其他请求排队,以及如何收回并将它们写入数据库

我不确定您为什么需要担心这个问题。servlet容器将处理线程(例如,通过线程池)。数据库将处理多个连接,因此如果您不在应用程序中修改不同线程之间的共享状态,则不必担心这一点。

我不确定您为什么需要担心这一点。servlet容器将处理线程(例如,通过线程池)。数据库将处理多个连接,因此如果您不在应用程序中修改不同线程之间的共享状态,您不必担心这一点。

如上所述,servlet容器将为您处理请求的线程。也就是说,对于连接到服务器的每个不同用户,将在您不知道的情况下创建一个新线程

所以,您所要做的就是确保您的jdbc代码是线程安全的,您应该不会有问题。数据库将为您执行所有必要的锁定:-)


Karl

如上所述,servlet容器将为您处理请求线程。也就是说,对于连接到服务器的每个不同用户,将在您不知道的情况下创建一个新线程

所以,您所要做的就是确保您的jdbc代码是线程安全的,您应该不会有问题。数据库将为您执行所有必要的锁定:-)


卡尔

没错。每个HTTP请求本身已经是一个线程。请记住,web容器在应用程序的生命周期内只创建一个servlet实例,并且servlet代码在所有请求之间共享。这意味着任何类级变量或静态变量都将在所有请求之间共享。如果有这样一个变量,它就不是线程安全的。您需要在方法级别声明特定于请求的变量threadlocal


至于JDBC:只要编写可靠的代码,一切都会顺利进行。使用连接池只对提高连接性能有用(相信我,这确实值得付出努力,连接数据库是一项相当昂贵的任务,可能需要至少200毫秒甚至更长的时间,而重用池中的连接几乎不需要任何成本)。它只是不会改变您编写的代码的线程安全性,它仍然在您的控制/手中。为了清楚地了解如何以正确的方式进行基本的JDBC编码,您可能会发现这很有用。

没错。每个HTTP请求本身已经是一个线程。请记住,web容器在应用程序的生命周期内只创建一个servlet实例,并且servlet代码在所有请求之间共享。这意味着任何类级变量或静态变量都将在所有请求之间共享。如果有这样一个变量,它就不是线程安全的。您需要在方法级别声明特定于请求的变量threadlocal


至于JDBC:只要编写可靠的代码,一切都会顺利进行。使用连接池只对提高连接性能有用(相信我,这确实值得付出努力,连接数据库是一项相当昂贵的任务,可能需要至少200毫秒甚至更长的时间,而重用池中的连接几乎不需要任何成本)。它只是不会改变您编写的代码的线程安全性,它仍然在您的控制/手中。为了清楚地了解如何以正确的方式进行基本JDBC编码,您可能会发现这很有用。

servlet容器已经是多线程的,您不需要自己做。servlet容器已经是多线程的,您不需要自己做。然后,服务器将负责每个请求向表中插入数据。然后,服务器将负责每个请求向表中插入数据。