2010-12-10 36 views
1

我需要更改Sevlet上下文在runtime.it中的對象的值由我的應用程序保證只有單個線程會重置該值在ServletContext屬性同時是否有任何方法來限制訪問servlet上下文中的屬性

問題:我的問題是當一個線程設置對象很多其他線程的值將被讀取權限到該對象,他們都可以讀出怪異值作爲對象可能使用它時的一半設置

有什麼辦法可以限制所有線程的讀取訪問直到寫入線程完成se創造新的價值。

回答

1

ServletContext.setAttribute()總是需要同步

把ServletContext.setAttribute()的同步塊。

這樣一次只有一個線程會廣告價值。

+0

這裏的問題不是兩個線程可能嘗試設置屬性。如果它確定只有一個線程將設置此屬性。但是當1個線程正在設置此屬性時,其他幾個線程可能具有對此屬性的讀取訪問權限。我想限制這些線程讀取,直到寫入線程完成時寫入 – dpsdce 2010-12-10 05:58:41

相關問題