Q
如何避免競爭條件
3
A
回答
6
一個通用的解決方案(例如threadSafe=false
)會導致一次執行一個請求。這不可避免地減緩了請求處理。
爲了避免這種情況,您需要了解爲什麼要獲得競爭條件並(重新)設計架構以避免出現問題。例如:
- 如果比賽條件是更新一些共享內存中的數據結構,你需要訪問和更新的數據結構,在粒度的適當水平
如果同步
競爭條件更新到您的數據庫時,您需要重構SQL以使用適當級別的事務。
這些只是(可能)如何解決您的種族條件問題的模式。事實上,你必須瞭解自己的根本原因。
5
這取決於你爲什麼有競爭條件。
最簡單的想法是沒有寫入的全局變量。
在只使用局部變量的方法中執行所有的邏輯。
在jsp頁面中沒有任何java代碼,但是調用bean來執行操作。
你在做什麼導致競爭條件?
1
isThreadSafe=false
這可能會導致性能下降,因爲它使頁面訪問順序。它也只會影響一個頁面,所以如果你通過另一個頁面訪問數據,這將不會爲你做任何事情。
synchronized(session)
這是不能保證工作(即使它會在某些服務器作爲實現的副作用的)。
任何解決方案可能都需要更多關於您試圖防範的數據和服務器配置的信息。
相關問題
- 1. 避免redis競爭條件
- 2. 避免競爭條件
- 3. 避免javascript競爭條件
- 4. 替代rand()以避免競爭條件?
- 5. 避免jQuery的競爭條件
- 6. 如何在發送按鍵事件時避免競爭條件
- 7. 如何避免競爭條件on Rails的
- 8. 如何在使用Dispatcher.Run()時避免競爭條件?
- 9. 如何避免使用Scala的Actor時的競爭條件
- 10. 如何使用StreamWriter避免競爭條件
- 11. 如何避免與獨特的支票競爭條件在Django
- 12. 如何避免使用scala並行集合的競爭條件
- 13. 雲存儲:如何避免競爭條件
- 14. Nodejs測試。如何避免競爭條件?
- 15. AMQP/RabbitMQ的 - 如何避免競爭條件
- 16. 如何避免CUDA中不同塊的競爭條件
- 17. 避免競爭狀態
- 18. Hazelcast EntryListener,如何避免競爭狀態?
- 19. 創建一個避免競爭條件的新文件
- 20. 競爭條件
- 21. 競爭條件
- 22. 競爭條件
- 23. 插入一行並避免競爭條件(PHP/MySQL)
- 24. 使用FB.logout避免在Facebook JavaScript API中競爭條件
- 25. 避免競爭條件而不使用systemverilog程序塊
- 26. 避免競爭條件,但仍然能夠回滾
- 27. 避免競爭條件下使用std ::互斥
- 28. iPhone - 結構化代碼以避免競爭條件
- 29. Django從Count分配ID:避免競爭條件
- 30. 使用信號量以避免競爭條件
相關問題:http://stackoverflow.com/questions/1820629/using-request-getsession-as-a-locking-object http://stackoverflow.com/questions/616601/is-httpsession-thread-safe -are-設置獲得屬性線程安全的操作 – McDowell 2010-01-29 11:28:32