2011-12-02 41 views
2

我有一個servlet動作方法。如果有一個請求來試圖做某事。如果還有第二個請求,我想阻止它,直到第一個請求完成爲止。我可以如何實現這一點。?如何在servlet動作中同步請求

回答

0

您可以使用標準的Java​​塊來實現此目的。就像這樣:

synchronized(this) { 
    // do some stuff 
} 

但是,我強烈建議不要在servlet中這樣做,因爲這可能會導致嚴重的性能影響。 Servlet應該是無狀態的,因此併發請求不應相互影響。

0

你有兩個選擇:

  1. 如果你的用戶羣是有限的,而不是越來越多,建議你的servlet實現SingleThreadModel接口。這確保了servlet一次只處理一個請求。

  2. 如果您的用戶羣正在增長並且需要擴展,建議使用synchronization block。在這裏,您只會同步可能導致數據不明確的'代碼塊'。這個想法是減少要被同步的代碼量,以便它不會導致任何性能問題。