我有一个servlet操作方法。如果有一个请求来尝试做某事。如果有第二个请求我想阻止它直到第一个完成。我怎么能实现这个。?
答案 0 :(得分:0)
您可以使用标准Java synchronized
块来实现此目的。像这样:
synchronized(this) {
// do some stuff
}
但是我强烈建议不要在servlet中做这样的事情,因为它可能会导致严重的性能影响。 Servlet应该是无状态的,因此并发请求不应该相互影响。
答案 1 :(得分:0)
您有两种选择:
如果您的用户群有限且没有增长,建议您的servlet实现SingleThreadModel
接口。这可以确保servlet一次只处理一个请求。
如果您的用户群不断增长且需要扩展,建议您使用synchronization block
。在这里,您只会同步“代码块”,这可能会导致数据模糊不清。我们的想法是减少要同步的代码量,这样就不会导致任何性能问题。