Multithreading javaeewebapps中的线程

Multithreading javaeewebapps中的线程,multithreading,jakarta-ee,Multithreading,Jakarta Ee,我很好奇以下概念通常如何在JavaEE容器中执行,是每个请求创建一个实例,还是一个实例服务于所有请求 小仆 标签 我想知道这一点,因为最近我在自定义标记中使用了很多StringBuffers,避免使用StringBuilder,因为它不是线程安全的。我想知道这些东西是如何工作的,这样我才能编写更好的代码。一些应用服务器实现线程池,每个线程执行一定数量的请求,必要时在它们之间切换负载。更简单的引擎将根据请求假脱机一个线程。但是,如果您从不同时从多个线程访问StringBuilder,那么您就永

我很好奇以下概念通常如何在JavaEE容器中执行,是每个请求创建一个实例,还是一个实例服务于所有请求

  • 小仆
  • 标签

我想知道这一点,因为最近我在自定义标记中使用了很多StringBuffers,避免使用StringBuilder,因为它不是线程安全的。我想知道这些东西是如何工作的,这样我才能编写更好的代码。一些应用服务器实现线程池,每个线程执行一定数量的请求,必要时在它们之间切换负载。更简单的引擎将根据请求假脱机一个线程。但是,如果您从不同时从多个线程访问StringBuilder,那么您就永远不会遇到线程安全问题

两者都是正确的。容器可以为新请求重用旧实例,甚至在需要服务更多请求时创建新实例

使用StringBuilder应该是安全的,只要其使用不跨越实例边界(通过静态使用、返回StringBuilder等)。 因此,如果您在函数/方法中使用它来创建字符串输出,那么这样做是安全的