2009-06-01 24 views
2

我很好奇以下概念通常如何在Java EE容器内执行,是一个实例,每个请求创建,还是一个实例为所有的请求?线程Java EE中的webapps

  • Servlet的
  • 标签

我想知道这是因为最近我一直在使用大量StringBuffers在我的自定义标签,避免StringBuilder的,因为它不是线程安全的。我想知道肯定这个东西是如何工作的,所以我可以写出更好的代码

回答

3

都正确。容器可以重新使用旧实例来处理新请求,甚至可以在需要更多请求时创建新实例。

使用StringBuilder的应该是安全的,只要它的使用不越过边界情况(由静态用法,返回StringBuilders等)。 所以,如果你使用它的函数/方法来创建你的字符串输出,你很安全。

1

一些应用服务器实现线程池,将执行一定数量的每个线程的请求,根据需要进行切换负载。更简单的引擎会为每个请求后台一个线程。但是,如果你永远不能同时从多线程访问你的StringBuilder,你应该永远不会遇到关于线程安全的问题。