如何在servlet操作中同步请求

时间:2011-12-02 12:54:41

标签: java multithreading struts

我有一个servlet操作方法。如果有一个请求来尝试做某事。如果有第二个请求我想阻止它直到第一个完成。我怎么能实现这个。?

2 个答案:

答案 0 :(得分:0)

您可以使用标准Java synchronized块来实现此目的。像这样:

synchronized(this) {
  // do some stuff
}

但是我强烈建议不要在servlet中做这样的事情,因为它可能会导致严重的性能影响。 Servlet应该是无状态的,因此并发请求不应该相互影响。

答案 1 :(得分:0)

您有两种选择:

  1. 如果您的用户群有限且没有增长,建议您的servlet实现SingleThreadModel接口。这可以确保servlet一次只处理一个请求。

  2. 如果您的用户群不断增长且需要扩展,建议您使用synchronization block。在这里,您只会同步“代码块”,这可能会导致数据模糊不清。我们的想法是减少要同步的代码量,这样就不会导致任何性能问题。