2011-12-02 52 views
2

我有一个servlet动作方法。如果有一个请求来试图做某事。如果还有第二个请求,我想阻止它,直到第一个请求完成为止。我可以如何实现这一点。?如何在servlet动作中同步请求

回答

0

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

synchronized(this) { 
    // do some stuff 
} 

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

0

你有两个选择:

  1. 如果你的用户群是有限的,而不是越来越多,建议你的servlet实现SingleThreadModel接口。这确保了servlet一次只处理一个请求。

  2. 如果您的用户群正在增长并且需要扩展,建议使用synchronization block。在这里,您只会同步可能导致数据不明确的'代码块'。这个想法是减少要被同步的代码量,以便它不会导致任何性能问题。